From 8dce541c96a329e3b12f3ea3794fcc8202fbd134 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Tue, 7 Nov 2023 13:09:44 +0200 Subject: simplift syntax somewhat + Explicit macro expansion + Still have to simplify AST and type stuff, probably worth rewriting or something --- hmm.t | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 hmm.t (limited to 'hmm.t') 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); +} -- cgit v1.3