aboutsummaryrefslogtreecommitdiffstats
path: root/samples/tuples.tunk
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2021-11-25 13:30:25 +0200
committerJan Tuomi <jans.tuomi@gmail.com>2021-11-25 19:01:31 +0200
commit3d68debb9b90875b91b86b935b8b311758d40747 (patch)
tree03622f8a083a863e404bc50b919b7946b97ccee1 /samples/tuples.tunk
parent5a8684445c2799458aa1d5b8dfd1aa032016e2aa (diff)
Update sample code
Diffstat (limited to 'samples/tuples.tunk')
-rw-r--r--samples/tuples.tunk28
1 files changed, 28 insertions, 0 deletions
diff --git a/samples/tuples.tunk b/samples/tuples.tunk
new file mode 100644
index 0000000..4c7f0a4
--- /dev/null
+++ b/samples/tuples.tunk
@@ -0,0 +1,28 @@
+# Define a constructor for making a 2-tuple (a, b)
+new-pair a b fn = fn a b;
+
+# Define selector functions for picking out an element from the 2-tuple
+pair-first p = p true;
+pair-second p = p false;
+
+# Test them out
+my-pair = new-pair 1 2;
+pair-first my-pair;
+pair-second my-pair;
+
+# Define a constructor for making a 3-tuple (a, b, c)
+new-triple a b c fn = fn a b c;
+
+# Define selector functions for picking out an element from the 3-tuple
+select1 a b c = a;
+select2 a b c = b;
+select3 a b c = c;
+triple-first t = t select1;
+triple-second t = t select2;
+triple-third t = t select3;
+
+# Test them out
+my-triple = new-triple "a" "b" "c";
+triple-first my-triple;
+triple-second my-triple;
+triple-third my-triple;