Scheme in the browser: A Hoot of a tale(spritely.institute) |
Scheme in the browser: A Hoot of a tale(spritely.institute) |
I'm not a big believer in syntax (and think LISPy language will always remain niche, which is part of its appeal), but one thing I'd imagine is that LISP/Scheme could've helped to prevent the syntax excess that is CSS, simply because there were already plausible styling examples for eg. classic stateful recto/verso print formatting, and LISP's homoiconicity would've make CSS syntax look kindof gross.
As someone who uses Scheme regularly and follows Scheme communities fairly actively, I think most people who use Scheme and other LISP dialects would disagree. People often (I think only half jokingly) talk about the possible "Utopia" we missed out on if LISP has won. The word "successful" is often used to refer to implementations or dialects based on how much use they have.
I think the fact that LISP is niche is actually a negative for most of the community, not part of the appeal.
Separately, your criticism of lisp syntax is pure bikeshedding, and depressing to see it brought up again and again here (and I'm not a lisper). If you can never see below the surface you're always going to be stuck at the shallow end.
For anyone interested, here's how easy it is to use s7 (which is implemented as one big ANSI C file) in WASM. https://github.com/iainctduncan/s7-wasm
And a more comprehensive example: https://github.com/actondev/s7-playground
That said, I've been following Hoot with interest. Can't wait until the non-experimental browser releases catch up.
I’ve learned Haskell, JavaScript (actually learned rather than the passing familiarity I had before), Smalltalk, and APL since then. The hardest part of all of them has been keeping syntax straight.
Things with very regular syntax like Lisps and Smalltalk were a breeze to get comfortable, but a significant portion of my time learning Haskell and APL were spent learning how to parse expressions and precedences in my mind’s eye. There’s definitely a bit of a “reading the Matrix” moment for both of them that you tend to forget after you get it though.
I’m not saying we should stop trying to develop novel syntax either though. Anyone that has ever tried to use the object system in Racket knows just how painful it can be to not have syntactic sugar for something important.
`(send object a-message anyone?)`
Edit: The point I didn't make very clearly above was at the syntax is actually pretty much the same, the semantics due to type differences and limitations really screw things up.