Thanks for the quick reply.
After a quick look, this seems exactly what I was looking for.
When I’ve got some time to look into it, I’ll let you know if I find something not listed in the AST devdocs.
Good point there. I think I can get away with letting call
be optional, and use it to dispatch in case of name clashes between “user defined” funtions and special forms, something like this
(call foo) means foo()
(foo) also means foo()
(ref a b) means a[b]
(call ref a b) means ref(a, b)
In any case, by looking at the special forms found listed in the AST devdocs, it seams to me that the names they carry, being very concise, are perfectly good for built-in stuff, but not so good for naming my own stuff. Typically if I find myself naming a function something like ref
or curly
it is only because I’m being too lazy to find a proper more meaningful name.