Exausitve list of Expr's heads

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.

2 Likes