aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/res.ek25
1 files changed, 25 insertions, 0 deletions
diff --git a/examples/res.ek b/examples/res.ek
new file mode 100644
index 0000000..f7c96df
--- /dev/null
+++ b/examples/res.ek
@@ -0,0 +1,25 @@
+/* simple example with C-like strings. A real implementation would likely want
+ * to use a string wrapper or something. */
+
+typedef i27 {}
+typedef i9 {}
+
+typedef res[any T] {
+ *i9 e;
+ T v;
+
+ ok(T v => res![T]) {
+ return res![T]{.e = 0 as *i9, .v = v};
+ }
+
+ error(*i9 e, T v => res![T]) {
+ return res![T]{.e = e, .v = v};
+ }
+}
+
+define any[] {}
+
+main()
+{
+ const a = ok::res![i27](20);
+}