4 ms·
This inspired me to use same AST library to generate JavaScript from Scheme in my Scheme based lips called LIPS. I was planing on writing compiler (first readin
by jcubic 6y ago
This inspired me to use same AST library to generate JavaScript from Scheme in my Scheme based lips called LIPS. I was planing on writing compiler (first reading more about compilers) maybe it would be simpler than I thought.
But still I think that `((. console log) "hello")` is not as nice as `(console.log "hello")` as in LIPS. My old code was using the same syntax but I've changed the interpreter and you now can use dot notation on any JavaScript objects.
- an_ko 6y ago[ To save readers a search, LIPS is at https://github.com/jcubic/lips https://github.com/jcubic/lips ] I'm happy that eslisp has inspired other language ideas. LIPS is cool. The auto-resolving Promise feature is a great idea that's only really possible when you implement the language as an interpreter like you have. Generated code for that would be a mess... I agree about the (. console log) thing. Such a common operation should be easy to type. I only did it this way to avoid adding any more syntax to the language, because I thought I could solve that problem later by making the syntax configurable by users. ...which I haven't really done well yet. Eslisp has a system called _transform macros_, one of which is https://github.com/anko/eslisp-propertify https://github.com/anko/eslisp-propertify which turns `console.log` atoms into `(. console log)`, making the syntax legal. The transform macro system is really awkward to use and limited in functionality. I'm working in private on replacing the whole parser with one that user macros could modify, based on https://github.com/anko/partser https://github.com/anko/partser. Parser combinators are the future!