7 ms·
I'm not a Lisp expert but one of the most fun languages I've used recently is Janet [1], it's a single binary, very easy to get started, decent docs and battery
by dysoco 2y ago
I'm not a Lisp expert but one of the most fun languages I've used recently is Janet [1], it's a single binary, very easy to get started, decent docs and battery-included. It's great for little CLI tools or solving Advent of Code for example.
I'm curious why they don't mention being a Lisp in their page though, perhaps it's not a "real" lisp?
[1]: https://janet-lang.org/ https://janet-lang.org/
- roxolotl 2y agoI’ve been playing with Janet recently as well and really enjoying it. It does seem slightly abandoned though. I can’t tell if it’s similar to what’s happening with Common Lisp where thins are simply complete, or if the small ecosystem that did exist has mostly faded away. As a result I’ve been tending towards Fennel because Lua does have complete packages. But I really want to like Janet.
- diggan 2y ago> It does seem slightly abandoned though I think in general "free-time projects" just move a bit slower. Still, it seems to get ongoing work (https://github.com/janet-lang/janet/graphs/contributors https://github.com/janet-lang/janet/graphs/contributors), so doesn't seem abandoned to me at all.
- roxolotl 2y agoMaybe it would be more accurate to say the ecosystem seems abandoned? But I think what’s actually happening there is I’m coming from the nonsense that is npm so I see one option for making http requests that is just bindings to libcurl and think that’s a downside. When really the ease of C interop is a selling point for Janet.
- rcarmo 2y agoThis. I tried to use Janet a few times but the joy web framework seems to have completely stalled, and database support likewise.
- worthless-trash 2y agoAre you able to distribute fennel builds in a single binary easily ? > Fennel because Lua does have complete packages Do you end up using a lot of lua packages in fennel ?
- roxolotl 2y agoNot a lot of packages but more than 0. For example I’m working on a small static site generator so I’m using lunamark. Fennel has the ability to compile[0] to a binary that works pretty well and very well so long as you don’t have any dynamic links. 0: https://wiki.fennel-lang.org/Distribution#binary-executable https://wiki.fennel-lang.org/Distribution#binary-executable
- parlortricks 2y agoI use Fennel with TIC80, Love and Raylib. Such a fun little Lisp that was the first one to really stick. Really helped that Fennel has anti-fennel that converts between Fennel and Lua.
- vkazanov 2y agoDefining what a "real lisp" is... a bit like defining what a "real roguelike" is. Depending on who you ask it either becomes yet another common lisp or just "a lot of parentheses" :-) Janet is cool though. And it is a lisp. And hades is a roguelike.
- dartos 2y agoI don’t think there’s any confusion over the definition of roguelike vs roguelite. The key difference is that roguelikes lack the meta progression that roguelites have. Rogue and friends didn’t have meta progression. So hades is a roguelite, not a roguelike. It’s a well known distinction.
- vkazanov 2y agosigh The key difference according to the famous Berlin interpretation is that roguelikes are supposed to have certain traits [1] making them into a variation of classic games: ADOM, (B)Rogue, Nethack, etc. Metaprogression can or cannot be in the game. Doesn't even matter. In this worldview roguelites, generally speaking, only borrow certain aspects of the definition, with permadeath being the main one. Either way, there are many (very) influential devs who do not agree even with this strict definition [2]. [1] https://www.roguebasin.com/index.php/Berlin_Interpretation https://www.roguebasin.com/index.php/Berlin_Interpretation [2] http://www.gamesofgrey.com/blog/?p=403 http://www.gamesofgrey.com/blog/?p=403
- dartos 2y agoSure some devs may split hairs over the precise semantics, but for the market at large, the difference is understood. Talk to any average roguelike/lite enjoyer and they’ll identify that as the difference. “Roguelikes” do tend to have that same top down grid style, though. Can’t think of any permadeath games without metaprogression which encourage replaying the whole game on death and which don’t use that format. Just like with lisps. Some devs may split hairs over what is and is not a lisp, but for most people, if the language is dynamic, garbage collected, has a regular parens-heavy syntax, and has powerful macro features, it’s a lisp.
- zabzonk 2y agoI dunno, but maybe "real Lispers" don't like languages that have imperative features like "for" and "while"? OK, real Lispers, don't kill me!!!
- dartos 2y agoNot at all. Common Lisp has the loop macro which is fairly imperative. It also has a really great OOP implementation in CLOS Lisp need not be purely functional.
- diggan 2y ago> I'm curious why they don't mention being a Lisp in their page though, perhaps it's not a "real" lisp? Maybe to avoid some of the zealots who refuse to call Clojure et al "lisps" since they're missing cons, X, Y and so on. I remember reading somewhere in a GitHub issue or PR that the author/maintainer also calls Janet "lisp-like" rather than "a lisp", fwiw.
- cess11 2y agoIt doesn't grow from cons cells, which some people think is crucial for an authentic Lisp. They also tend to exclude Clojure. I think maybe the Janet designers don't want to get bogged down in the language wars, and don't really care whether lispers enjoy their language or not. A language with Lisp in the name and cons cells that a purist might argue isn't an authentic Lisp is Picolisp, e.g. because it has FEXPR:s rather than SEXPR:s and no macros. It's a great tool either way, easy to be very productive in when inventing ad hoc tools in a shell. The 'match function is quite different from e.g. the PEG:s in Janet but I really like it when doing something obtuse and gnarly with strings. Having a Prolog engine at hand is always good too. https://picolisp.com/wiki/?home https://picolisp.com/wiki/?home
- wglb 2y ago> They also tend to exclude Clojure. As a CL (sbcl, mainly) I'm not interested in discussion about whether a language is a "true" lisp or not. I don't think that is a useful measure. Something I recommend keeping in mind in classifying lisp-like languages would be based on how much code they share. With CL and Clojure, it is pretty much zero. This can lead to a practical understanding of differences and strengths. I have a friend who is a long-time lisp guy who recently has made a living programming Clojure.
- vfclists 2y agoIt is now listed as a Lisp at r/lisp, courtesy of your truly ;)