summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-08-15 12:35:08 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-08-15 12:35:08 +0200
commit8fd556f0065b7a634602cf4a8b666a426d4e8de6 (patch)
tree042edf153507431d74e1a9f125493e17ef7784cc /data/tests
parent5e600685d284d223e7979e7ad760a2eb29a2e9d3 (diff)
Looks like it works. Damn fun to use, too.functions
Diffstat (limited to 'data/tests')
-rw-r--r--data/tests/lambdas.fate60
1 files changed, 60 insertions, 0 deletions
diff --git a/data/tests/lambdas.fate b/data/tests/lambdas.fate
new file mode 100644
index 0000000..654a11c
--- /dev/null
+++ b/data/tests/lambdas.fate
@@ -0,0 +1,60 @@
+(fate_version 1)
+
+(global (lambda int (int)) int_to_int)
+
+(set int_to_int
+ (lambda ( (int i) )
+ (+ (var i) 1)
+ )
+)
+
+(assert (= 1 (eval int_to_int 0)) FAILED: lambda A)
+
+(define_sequence map_int_to_int
+ (
+ ((ptr (list int)) out)
+ ((ptr (list int)) in)
+ ((lambda int (int)) fun)
+ )
+ (foreach (at in) i
+ (add (eval fun (var i)) (at out))
+ )
+)
+
+(global (list int) l0)
+(global (list int) l1)
+
+(add 0 l0)
+(add 1 l0)
+(add 2 l0)
+(add 3 l0)
+(add 4 l0)
+(add 5 l0)
+
+(visit map_int_to_int (ptr l1) (ptr l0) (var int_to_int))
+
+(foreach l0 i
+ Was (var i)
+)
+
+(foreach l1 i
+ Is (var i)
+)
+
+(clear l1)
+
+(visit map_int_to_int
+ (ptr l1)
+ (ptr l0)
+ (lambda ( (int i) )
+ (* (eval int_to_int (var i)) 2)
+ )
+)
+
+(foreach l1 i
+ Is (var i)
+)
+
+;;(global (lambda int (int)) times_two)
+
+(end)