Shen: A Sufficiently Advanced Lisp [video] (2014)
youtube.com
youtube.com
http://www.shenlanguage.org/shenbsd.htm
I am an amateur Lisper, and like others I whined (perhaps irrationally) that their custom non-OSI only one implementation of the language or else license was scaring people off. Not that the BSD license assuages my concerns about community weirdness (hard to describe, but this ia a very personal opinion and you can dismiss it), but I would like to see if the demand will drive open sourcing the code.
Also very cool is that you can find Shen implementations in more than one flavor: Common Lisp, Clojure, Ruby, and more. Definitely check out the site if you have not yet.
(define map
{ (A --> B) --> (list A) --> (list B) }
F [] -> []
F [ X | XS ] -> [(F X) | (map F XS)])
And this is one of the cases without any semicolons.Shen also uses the atrocious "curried form" of function types, where the function that adds two numbers has type number->number->number, and the reader must do the mental gymnastics to convert it to (number,number)->number (and good luck when it's more complicated than that).
I wonder if you took a language like Haskell and changed some of the syntax to look Lispy if it could masquerade as a Lisp? I'm not saying that's what's happening, it's just hard to wrap my head around a syntax like this that claims to be Lispy.
(defun map (f l)
(shen.map-h f l ()))
(defun shen.map-h (f l accum)
(cond ((= () l) (reverse accum))
((cons? l) (shen.map-h f (tl l) (cons (f (hd l)) accum)))
(true (shen.f_error shen.map-h))))EDIT: Especially since Shen is now BSD licensed.
I am open to being proven wrong, though...
Haskell also has very powerful metaprogramming facilities, like template haskell [1].
[0] http://scalamacros.org/ [1] https://wiki.haskell.org/Template_Haskell
I'm not sure if these made it into ATS2 though.
You should check out the work being done on typed template Haskell then.
This link may be a start: https://groups.google.com/d/msg/qilang/mVSJIyp-OhM/FjcAOAWUi...
It's unfortunate that the original authors views on licensing takes so much discussion away from Shen itself as it's an interesting language.
I just started studying Java, and found the yet to be certified Java implementation. I am afraid to look at it, lest brains come of my nose.
Edit: I would say, if you want to practice on implementing a compiler & runtime (or VM with JIT or LLVM frontend etc) KL is a good place to start. It's so easy (again, to get something working; to optimise etc is obviously just as painful as with any other language implementation) that it is a lot of fun and you learn a lot if you never did it before.
Care to expand on this? I'm curious, what is your opinion and preferred platform/languages?
> "I'm not the parent, but in noncritical applications an accommodating compiler/interpreter will speed up development."
What does "speed up development" mean? Does it mean "as fast as you can push it to your users"? Does it mean "as soon as it passed QA"? Does it mean "as soon as we receive no further bug reports on it for at least 6 months"?
Please show your scientifically rigiorous evidence. Because it appears very few other people have any (either way), so at the very least you could earn a prize if you shared yours! :)
[1] If you think it refutes my point, that is.
If there is no evidence either way, yet every other developer raves about types all the time (the way "connaisseurs" rave about fine wine and expensive scotch despite being unable to objectively tell the difference), doesn't it follow that types are overrated?
What is your actual point and what is your evidence?
Now, books have been optimized really, really well -- and actually take up remarkably few resources to make -- but as long as I'll have a device on which to read e-books anyway -- all those resources are wasted.
Just give me a DRM-free epub version, and I'm much more likely to buy your book.
https://groups.google.com/d/msg/qilang/lokvvf0xLJc/20y8ZkzoN... https://groups.google.com/d/msg/qilang/D3tmhQvfnOE/qcsXhRomF...