85
edits
No edit summary |
No edit summary |
||
Line 119: | Line 119: | ||
= Conclusion = | = Conclusion = | ||
One thing I've always thought about macros in Common Lisp is that you often don't need them because the language is already so rich on its own. A lot of the times I find myself wanting to use a macro is when I'm using other languages that don't have them. In this case, worlds collide since the actual implementation language is pretty spartan, but it can be extended with the full power of Lisp. Which means that usually when I'd wish for macros I'd sigh wistfully and start copy-pasting, but now I can actually have them. It's pretty cool, and combined with JavaScript's dynamic nature, and my home-grown interactive development environment, it does feel kinda like you're writing Lisp... until the illusion is inevitably broken by semantic differences. But I actually do like it a lot anyway, it's a lot more fun than writing straight JS, that's for sure. | A few disorganized thoughts: | ||
# One thing I've always thought about macros in Common Lisp is that you often don't need them because the language is already so rich on its own. A lot of the times I find myself wanting to use a macro is when I'm using other languages that don't have them. In this case, worlds collide since the actual implementation language is pretty spartan, but it can be extended with the full power of Lisp. Which means that usually when I'd wish for macros I'd sigh wistfully and start copy-pasting, but now I can actually have them. It's pretty cool, and combined with JavaScript's dynamic nature, and my home-grown interactive development environment, it does feel kinda like you're writing Lisp... until the illusion is inevitably broken by semantic differences. But I actually do like it a lot anyway, it's a lot more fun than writing straight JS, that's for sure. | |||
# The JavaScript ecosystem rightfully gets a lot of flack for having insane amounts of complexity and churn; new frameworks, new compiler passes, new sugars on top of JavaScript to make it usable (TypeScript), it's a mess. In some ways I see the Common Lisp ecosystem as being nearly the exact opposite. Libraries instead of frameworks, that sit undisturbed on GitHub for years but still usable. Despite the fact that the language was specified in the 90s and hasn't evolved since then, it still feels extremely fresh because it's so moldable and dynamic. One of my goals with this project was to approach frontend development with the Lisp mentality: carefully choose simple building blocks like Preact and trident-mode, understand them, and combine them in straightforward ways. | |||
# Although I do appreciate the effort behind Parenscript, it really is more of a syntactical wrapper than a new language. I'm interested in [https://github.com/jscl-project/jscl JSCL], which aims to properly support Common Lisp on top of JS. One dream project I have is to build a dynamic game engine on something like that that will run in browser and allow for Jak and Daxter or Minecraft style hot-swapping at runtime. [https://www.youtube.com/watch?v=72y2EC5fkcE This demo] blew my mind recently and it's exactly the kind of thing I want to make. I played with ECL a while back which can compile to Emscripten, and got very close to getting SDL running in it, but it wasn't quite ready at the time. | |||
Check out the game here: https://online-freecell.com |