Lumen – Self-hosted Lisp for Lua and JavaScript
bjoli 2021-08-17 06:28:30 +0000 UTC [ - ]
In the beginning of my lisp journey I would have probably jumped on this, but then I found SRFI-71 that extends the regular scheme let with multiple values support in a backwards compatible way. I myself extended SRFI-71 in a small project with support for pattern matching in the multiple values form.
None of this would have been possible using a clojure-style let.
b3n 2021-08-17 09:47:13 +0000 UTC [ - ]
Why? Clojure already supports pattern matching in its `let`, e.g.
(let [[head & tail] (produces-a-list)] ...)
bjoli 2021-08-17 12:29:15 +0000 UTC [ - ]
SRFI-71 for scheme extends let with support for values, like so:
(let ((q r (quotient/reminder 10 3))) ...)
This for is then also extensible (I have added pattern matching on top of it).Clojure's is not.
(let [q r (hyptohetical-2-value-quotient/reminder 10 3)] ...)
Makes no sense in clojure.
fulafel 2021-08-17 13:27:56 +0000 UTC [ - ]
bjoli 2021-08-17 16:52:15 +0000 UTC [ - ]
But sure. Rich has done many great decisions with regards to clojure. This part is one of the few I don't agree with (and maybe regular bit-tries instead of rrb-trees).
pankajdoharey 2021-08-17 07:59:32 +0000 UTC [ - ]
bjoli 2021-08-17 08:32:35 +0000 UTC [ - ]
(let [a 5 b 6] ...)
whereas scheme and common lisp does (let* ((a 5) (b 6)) ...)
SRFI-71 trivially extends this to do multiple values: (let ((a b (produces-2-values X y))) ...)
Which I extended to to pattern matching: (let ((a (head . tail) (produces-an-atom-and-a-list ...))) ...)
reitzensteinm 2021-08-17 10:12:14 +0000 UTC [ - ]
bjoli 2021-08-17 10:38:41 +0000 UTC [ - ]
reitzensteinm 2021-08-17 11:09:00 +0000 UTC [ - ]
bjoli 2021-08-17 12:18:38 +0000 UTC [ - ]
My complaint is the de-parenification of let. Why this form? It is easier to type, maybe, but visually it removes the distinction between binding, and makes any future extensions (like if clojure would gain multiple value support - however unlikely) impossible.
The strength of it is clearly visible SRFI-71 for scheme. Regular old let was trivially extensible to handle multiple values. And I trivially extended that to have pattern matching, without breaking any backwards compatibility.
reitzensteinm 2021-08-17 12:46:01 +0000 UTC [ - ]
From that perspective, including parens in let just to enable some hypothetical extension makes no sense.
ChunkyOnions 2021-08-17 03:30:31 +0000 UTC [ - ]
lawik 2021-08-17 04:30:26 +0000 UTC [ - ]
the_only_law 2021-08-17 03:32:02 +0000 UTC [ - ]
Well you certainly caught my interest...
guardian5x 2021-08-17 05:30:40 +0000 UTC [ - ]
yogthos 2021-08-17 00:39:00 +0000 UTC [ - ]
dgb23 2021-08-17 10:04:24 +0000 UTC [ - ]
rkangel 2021-08-17 13:35:01 +0000 UTC [ - ]
I had invested a lot of work into my emacs config in order to get things working in a usable way. The problem is that every new thing I added needed a whole lot more work. VSCode plugins usually work pretty well out of the box - e.g. I just installed the Elm plugin and it was working immediately with errors shown inline, autocomplete etc. If I had been able to get that going well in Emacs in less than an hour or two I'd have been pleasantly surprised.
VSCode also has two things that Emacs doesn't. Live workspace sharing so you can pair program remotely (it's fantastic) and the ability work on a repo that's the other end of an SSH link (yes Emacs has tramp, not it's not in the same league). The SSH stuff works amazingly seamlessly, it's been my primary development mode since the start of pandemic.
One proviso I will give to my Emacs opinions is that the Language Server Protocol was only just beginning to come in when I switched away. That abstraction level is exactly what Emacs needs (particularly given the threading restrictions) and a lot of language setup might be easier and more uniform if you can take advantage of it.
aerique 2021-08-17 10:19:57 +0000 UTC [ - ]
https://github.com/hlissner/doom-emacs#doom-emacs
tbonesteaks 2021-08-17 14:22:55 +0000 UTC [ - ]
aerique 2021-08-17 15:44:18 +0000 UTC [ - ]
[1] very subjective but they were mostly similar to my tastes