@yogthos that's just bad code.
I used to be super annoyed not having lisp-like macros, but the obsession with s-expressions escapes me.
... It's gunna be a tree regardless how you write it. Might aswel use whitespace(like Python) and infix notation, it's perfectly understandable and looks better...
I also do not understand people wanting static typing by the way. It only stops really shallow bugs as far as i can see.
@jasper there are a number of advantage to using s-expressions. A couple of big ones for me are:
Having a single syntax for logic and data. You can take any piece of code and transform it using the same language you're already using. I wrote about the benefits of that in detail here
S-expressions also allow much better editors where you're manipulating blocks of logic as opposed to lines of code as seen here
@yogthos @jasper Big fan of Forth here, but I definitely want to get more involved with Lisp eventually as well. Common Lisp in particular, mainly because it is the common benchmark against which other languages are referenced against. I did play around with Shen Lisp for some time, and really enjoyed the experience.
(I also have a partial cleanup of it on Github; lemme know if you want a link.)
FWIW, in the 25-ish years I’ve dabbled with it, I’ve never managed to get it to do anything useful or interesting. If you want to learn about Smalltalk, Squeak is a much better introduction.
@ckeen @jasper @yogthos Scheme is nice, but feels very incomplete to me -- the kind of language you'd write as a scripting tool. With Forth, the expectation is for you to write everything you need yourself, but Scheme seems to deter that way of thinking, and so feels at-odds with its own minimalism.
That said, given a Scheme and support for non-hygienic macros (because I just can't understand wtf hygienic macros are actually *doing*), I'd probably be quite happy.
I'm taking the Chuck Moore interpretation, where Chuck discourages libraries, opting instead for the programmer to write their own primitives.
Scheme systems all have a packaging standard at the very least, which encourages exactly the opposite philosophy.
My take is that Scheme encourages you to build and combine novel languages to solve a problem. When used that way, it's a lot like Factor.
It's packaging system is primarily an affordance for it's use as a teaching medium. It bears little resemblance in most expressions to, say, Maven or NPM. It's there to help students get an environment to do homework in.
I find it's also one of the more practical Lisps as it has access to both the JVM and Js ecosystems with tons of mature existing libraries for pretty much any task imaginable.
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!