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