aboutsummaryrefslogtreecommitdiff
path: root/examples/res.ek
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2024-08-14 18:08:54 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2024-08-14 18:08:54 +0300
commit085817c69d145400eac84e09704f48ede2bece68 (patch)
tree593f8a8bf8254cb78586d0355d7a0e1dbbe71c59 /examples/res.ek
parent6385450ddba34bc28bd7492d126fd38cb3f86f36 (diff)
downloadek-085817c69d145400eac84e09704f48ede2bece68.tar.gz
ek-085817c69d145400eac84e09704f48ede2bece68.zip
compiling example of a res struct
Diffstat (limited to 'examples/res.ek')
-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);
+}