10 ms·
It "transpiles" to lua. So you can do anything lua does, run on any lua interpreter, use any lua library. So yeah, blazing fast, with a decent macro system and
by zcam 8y ago
It "transpiles" to lua. So you can do anything lua does, run on any lua interpreter, use any lua library.
So yeah, blazing fast, with a decent macro system and fixing some of the odd corners of Lua at compile time. It's really a great little thing (it's 2k lines of lua, so super easy to embed/ship too).
- sitkack 8y agoTargeting Lua is a great choice, emitting byte-code ties one to a particular implementation. There are at least two other Lisps in Lua * https://github.com/sctb/lumen https://github.com/sctb/lumen * https://github.com/SquidDev/urn https://github.com/SquidDev/urn
- eggy 8y agoI want to use one of these three in order to write Lisp code, while getting Lua's ecosystem and distribution, but I am not sure which is most stable, and the differences between them. Can anybody expound on what makes them distinct from each other? I see Fennel and Lumen as the same with a big exception that Lumen also transpiles to JavaScript? [Edit] I recalled this older HN thread with some relevant information: https://news.ycombinator.com/item?id=16566825 https://news.ycombinator.com/item?id=16566825
- technomancy 8y agoThe creators of Fennel and Urn both chimed in to describe the differences between the two here: https://news.ycombinator.com/item?id=16567763 https://news.ycombinator.com/item?id=16567763 tl;dr Urn is a much bigger language that happens to compile to Lua as an implementation detail. Fennel is much closer to Lua and is dramatically simpler, only diverging from Lua semantics when the changes can be implemented purely at compile time. (immutable locals, blocking accidental global references/setting, etc) The compiler output from Fennel tends to be pretty readable and looks a lot like the input. If you need to write code that runs in the browser, Lumen is one choice, but you can also run Fennel in the browser using Fengari: https://fengari.io/ https://fengari.io/ I know next to nothing about frontend development but was able to integrate Fengari into https://fennel-lang.org https://fennel-lang.org to get the live REPL working with ease.
- eggy 8y agoYes, I had a comment in that older HN thread. I think this has me moving towards Fennel when compared with Urn, since I want a smaller language, but the examples of Lumen in this HN thread: https://news.ycombinator.com/item?id=17958650 https://news.ycombinator.com/item?id=17958650 are swaying me to spend some time with Lumen this weekend to understand how it compares to Fennel. The Lumen examples were pretty impressive and it works for JavaScript too.
- eggy 8y agoI tried the live repl and input the fibonacci example: > (fn fib [n] (if (< n 2) n (+ (fib (- n 1)) (fib (- n 2))))) which seemed to take, but then upon trying (print (fib 10)) it spit out the following: [string "return print(fib(10))"]:1: attempt to call a nil value (global 'fib') Do I need to initialize fib before in the repl?
- veli_joza 8y agoIt works if you run both expressions from file. There's a tutorial page that explains why this doesn't work in REPL. See "Locals are per-chunk" here: https://github.com/bakpakin/Fennel/blob/master/tutorial.md#gotchas https://github.com/bakpakin/Fennel/blob/master/tutorial.md#g...
- eggy 8y agoThanks, that makes sense. I will also try making it a global value assuming global works in the online REPL.
- manish_gill 8y agoI find your point about Lua's ecosystem to be interesting. I have been working with Nginx/Openresty for quite a while now and I've found the Lua library ecosystem to be quite a bit lacking. I like Lua quite a bit and it is of course, extremely fast, but I wish there were good "batteries" along with other stuff that I've come to expect from Python/Ruby et all. Of course, I've coded up some of those libraries myself as well. :) Just wondering what people's general thoughts on this are.
- eggy 8y agoI may not be in need of as many libraries as you. I find Lua has what I need. I have even started playing with Torch vs. Tensorflow, since I am not a fan of Python which is purely subjective for me. Python has a ton of libraries, but it just doesn't feel as good as Lisp or Lua, or many other languages to me. But then again, I love J! [1] [1] jsoftware.com
- zokier 8y ago> It "transpiles" to lua. So you can do anything lua does, run on any lua interpreter, use any lua library. Bit odd statement, considering that LuaJIT afaik targets Lua 5.1 compatibility with some 5.2 extensions, while main Lua is currently at 5.3. I guess the question is what version Fennel is targeting
- technomancy 8y agoFennel is continually tested against mainline Lua 5.1, 5.2, and 5.3 as well as LuaJIT: https://github.com/bakpakin/Fennel/blob/master/Makefile#L6 https://github.com/bakpakin/Fennel/blob/master/Makefile#L6 It works great with Fengari for client-side scripting; in fact this is what we use on the web site for the live REPL. We have run some tests against other obscure implementations such as Luerl and Rembulan but have encountered some bugs in those compilers that need to get addressed before they get integrated into the test suit.