shithub: limbobyexample

Download patch

ref: 747ef3dcbcb100c40659805d13d966540a892319
parent: cd8fd72bbb8de47f88390db0f13add61da2c90a1
author: henesy <henesy.dev@gmail.com>
date: Mon Mar 11 18:20:41 EDT 2019

add function references example

--- a/Function-Refs/README.md
+++ b/Function-Refs/README.md
@@ -6,14 +6,31 @@
 
 ## Source
 
-### 
+### funcrefs.b:18,34
 
+The variable `fp` is a name whose type is a reference to a function with a given argument and return value scheme. A function which fulfills this scheme can be used to set the reference, in this case the `cmp()` function is referenced by `fp`. 
 
+### funcrefs.b:36,46
 
-## Demo
+The `sort()` function takes a function reference as an argument, using it as a comparator. In this case `cmp()` and `rcmp()` are passed as a function reference argument. 
 
+### funcrefs.b:48,53
 
+The `choose()` function returns a reference to a function, being called in this case to return a given comparator with the comparator being called in-line.
 
+## Demo
+
+	; limbo funcrefs.b
+	; funcrefs
+	Matched smiley!
+	Did not match duck
+	[ d b c a]
+	[ a b c d]
+	[ d c b a]
+	quack ≥ quack
+	; 
+
 ## Exercises
 
 - Change the value of `c` to 1, what happens?
+- Write a function which returns a function which returns a function.
--- a/Function-Refs/funcrefs.b
+++ b/Function-Refs/funcrefs.b
@@ -47,10 +47,10 @@
 
 	c := 0;
 
-	if(choose(c)("quack", "quack") <= 0)
-		print("quack ≤ quack\n");
+	if(choose(c)("quack", "quack") >= 0)
+		print("quack ≥ quack\n");
 	else
-		print("quack > quack\n");
+		print("quack < quack\n");
 
 	exit;
 }
--- a/README.md
+++ b/README.md
@@ -36,6 +36,7 @@
 - [Switch Case](./Switch)
 - [Arrays](./Arrays)
 - [Functions](./Functions)
+- [Function References](./Function-Refs)
 - [Generics, Picks, and Interfaces (kind of)](./Generics)
 
 ## References