What makes a modern Lisp? I am aware of Fennel and Jannet. Anyone havng experience with one of those or another one I am not aware of?
xlii•6h ago
Having experience with many IMO it's all about value added. There might be concurrency, message passing (Janet) od global scope isolation (Fennel). Personally I had difficulty getting into Fennel, but no problems incorporating Janet into my flow even though the author is the same. I'm not a fan of hygienic macros though.
I would add Clojure to the modern Lisps, too, which I find the most feature rich (even though had much more blast writing Janet).
TacticalCoder•6h ago
> I would add Clojure to the modern Lisps, too, which I find the most feature rich (even though had much more blast writing Janet).
Yup. Clojure may not be the most lispy Lisp but it reaches: it works on top of the JVM (with super easy Java interop), it transpiles to JavaScript and I also use it to write script using Babashka (GraalVM/AOT native Clojure interpreter which starts in milliseconds, avoiding JVM startup time [notoriously slow for regular Clojure programs]).
Being able to share code between Clojure and ClojureScript is really sweet.
Clojure(Script) / Emacs (CIDER) / eglot (LSP client for Emacs): life is good!
neutronicus•2h ago
I know the homoiconicity purists hate the additional braces in Clojure, but I consider the literal vectors and hash tables a pretty big win over `#()` and the mess that is dealing with hash tables in CL.
tmtvl•6h ago
Common Lisp, which I would consider the most modern, has convenience features which most other languages (even other Lisps) lack. CLOS, macro expansion, and, of course, the condition system.
terminalbraid•2h ago
Which lisps lack a macro expansion system?
tmtvl•2h ago
R7RS (small, at least) doesn't seem to have macro-expand. R6RS also doesn't appear to have it.
kryptiskt•1h ago
R6RS has syntax-case macros which is superior to Common Lisp macros in every respect, they're both hygienic and can be used to implement a sloppy macro system if one so wishes.
tmtvl•1h ago
I think we're talking past each other. I mean something like:
So the modern scheme specs. (I'd argue putting small in there is unfair considering its intent and the actual implementations of r6rs do offer expansion, e.g. chez, guile, racket)
setopt•2h ago
Do you consider Common Lisp more "modern" than say Scheme or Racket?
As far as I know, the CL spec hasn’t been updated for 30+ years, and most of its design is far older.
tmtvl•2h ago
Don't know much about Racket, but CL has type dispatch:
(But note that deftypes aren't allowed to recurse.)
CL also has first-class support for debugging with things like describe, step, and trace built-in.
EDIT: Yeah, the CL spec dates from 1994 and a bunch of things which we would expect nowadays (networking, POSIX,...) are provided by external libraries rather than being part of the spec, but in various ways CL is way ahead of its time.
radiator•4h ago
Janet (with one l) is modern because it is, well, new. It doesn't need to carry the historical baggage of Common Lisp. It has many data structures, a concurrency model, it is suitable for functional programming and for object-oriented programming. It has libraries for common tasks and is well documented.
ritenuto•4h ago
> Janet (with one l)
Typo, it should be: “with one n” (as the earlier commenter wrote “Jannet”). It took me a while to parse this, I was searching for the nonexistent “l” embarrassingly long.
psychoslave•6h ago
Sorry, but what is Fennel?
Lyngbakr•6h ago
Fennel[0] is a Lisp-like language that transpiles to Lua. It was originally developed by Calvin Rose (author of Janet[1]), but is now maintained by Phil Hagelberg (author of Leiningen[2]).
Fennel absolutely rocks for creating games. It integrates with TIC-80 (open source fantasy console) and also Love (game engine) and PICO-8. Lots of blog articles on getting started. Check it out!
Kexoth•49m ago
If so can you reccomend (link here) some of the resources which got you started?
jhoechtl•7h ago
xlii•6h ago
I would add Clojure to the modern Lisps, too, which I find the most feature rich (even though had much more blast writing Janet).
TacticalCoder•6h ago
Yup. Clojure may not be the most lispy Lisp but it reaches: it works on top of the JVM (with super easy Java interop), it transpiles to JavaScript and I also use it to write script using Babashka (GraalVM/AOT native Clojure interpreter which starts in milliseconds, avoiding JVM startup time [notoriously slow for regular Clojure programs]).
Being able to share code between Clojure and ClojureScript is really sweet.
Clojure(Script) / Emacs (CIDER) / eglot (LSP client for Emacs): life is good!
neutronicus•2h ago
tmtvl•6h ago
terminalbraid•2h ago
tmtvl•2h ago
kryptiskt•1h ago
tmtvl•1h ago
terminalbraid•1h ago
setopt•2h ago
As far as I know, the CL spec hasn’t been updated for 30+ years, and most of its design is far older.
tmtvl•2h ago
CL also has first-class support for debugging with things like describe, step, and trace built-in.
EDIT: Yeah, the CL spec dates from 1994 and a bunch of things which we would expect nowadays (networking, POSIX,...) are provided by external libraries rather than being part of the spec, but in various ways CL is way ahead of its time.
radiator•4h ago
ritenuto•4h ago
Typo, it should be: “with one n” (as the earlier commenter wrote “Jannet”). It took me a while to parse this, I was searching for the nonexistent “l” embarrassingly long.