aboutsummaryrefslogtreecommitdiffhomepage
path: root/samples/rosetta/function_composition.bruijn
diff options
context:
space:
mode:
authorMarvin Borner2024-03-02 16:16:51 +0100
committerMarvin Borner2024-03-02 19:30:59 +0100
commitca3907431bfde5aa0715945222ce777d72e6b411 (patch)
tree5399b72899c5d66f94782892ba9dbf29839aca22 /samples/rosetta/function_composition.bruijn
parent46cc8f5b0da07d8c7cb354c7b7a281b8d0f3d7bf (diff)
Docs & samples
Diffstat (limited to 'samples/rosetta/function_composition.bruijn')
-rw-r--r--samples/rosetta/function_composition.bruijn21
1 files changed, 21 insertions, 0 deletions
diff --git a/samples/rosetta/function_composition.bruijn b/samples/rosetta/function_composition.bruijn
new file mode 100644
index 0000000..3415c5e
--- /dev/null
+++ b/samples/rosetta/function_composition.bruijn
@@ -0,0 +1,21 @@
+:import std/Number .
+
+# composition, bluebird combinator
+…∘… [[[2 (1 0)]]]
+
+:test (((inc ∘ (mul (+2))) (+3)) =? (+7)) ([[1]])
+
+# 2x composition, blackbird combinator
+…∘∘… [[[[3 (2 1 0)]]]]
+
+:test (((inc ∘∘ mul) (+2) (+3)) =? (+7)) ([[1]])
+
+# 3x composition, bunting combinator
+…∘∘∘… [[[[[4 (3 2 1 0)]]]]]
+
+:test (((inc ∘∘∘ (add ∘∘ mul)) (+1) (+2) (+4)) =? (+7)) ([[1]])
+
+# reverse composition, queer bird combinator
+…→… [[[1 (2 0)]]]
+
+:test ((((mul (+2)) → inc) (+3)) =? (+7)) ([[1]])