summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'data/tests/extra_functionals.fate')
-rw-r--r--data/tests/extra_functionals.fate39
1 files changed, 39 insertions, 0 deletions
diff --git a/data/tests/extra_functionals.fate b/data/tests/extra_functionals.fate
new file mode 100644
index 0000000..53c4b33
--- /dev/null
+++ b/data/tests/extra_functionals.fate
@@ -0,0 +1,39 @@
+(fate_version 1)
+
+(declare_structure test_struct
+ (int i)
+ (float f)
+ (int j)
+ (string str)
+)
+
+(global test_struct st0)
+(global test_struct st1)
+
+(set_fields! st0
+ (i -1)
+ (f -5.0)
+ (j -2)
+ (str nothing)
+)
+
+(global (lambda test_struct (test_struct)) update_test_struct)
+
+(set_value update_test_struct
+ (lambda ( (test_struct s) )
+ (if_else (< (var s.i) 10)
+ (eval
+ update_test_struct
+ (set_fields s
+ (i (+ (var s.i) 1))
+ (j (+ (var s.j) 10))
+ )
+ )
+ (var s)
+ )
+ )
+)
+
+(set_value st1 (eval update_test_struct (var st0)))
+
+(end)