aboutsummaryrefslogtreecommitdiff
path: root/hmm.t
diff options
context:
space:
mode:
Diffstat (limited to 'hmm.t')
-rw-r--r--hmm.t54
1 files changed, 54 insertions, 0 deletions
diff --git a/hmm.t b/hmm.t
new file mode 100644
index 0000000..5c3d76c
--- /dev/null
+++ b/hmm.t
@@ -0,0 +1,54 @@
+/* common.ek */
+typedef any {}
+
+/* vec.ek */
+typedef vec {
+ i27 size;
+ i27 cap;
+ *any buf;
+}
+
+insert(*vec v, i27 i, typeof(*v.buf) e)
+{
+ ...
+}
+
+/* define local vector type */
+define vec!(t)
+{
+ struct vec [vec] {*t buf;}
+}
+
+/* map.ek */
+typedef hashable {
+ /* pointers? */
+ i27 hash(hashable);
+}
+
+typedef map {
+ i27 size;
+ i27 cap;
+ *hashable keys;
+ *any values;
+}
+
+// vs. append(*map h, typeof h.keys[0] k, typeof h.values[0] e)
+// vs. append(*map h, ?h.keys[0] k, ?h.values[0] e)
+// vs. append(*map h, #h.keys[0] k, #h.values[0] e)
+// vs. append(*map h, :h.keys[0] k, :h.values[0] e)
+// vs something else, hmm
+append(*map h, `h.keys[0] k, `h.values[0] e)
+{
+ ...
+}
+
+/* main.ek */
+main()
+{
+ vec!(i27) v;
+ // should automatically find the correct insert (unless the same
+ // elements as the vec typedef are used somewhere else)
+ insert(v, 0, 20);
+ // otherwise, force search as vec?
+ insert(v as vec, 0, 20);
+}