The Shen programming language
shenlanguage.org
shenlanguage.org
"Part of our motivation in maintaining a tight spec and a reliable platform is to hold the Shen community together so that we do not splinter our resources on multiple incompatible forks. We do not want multiple incompatible dialects of Shen, multiple compilers, multiple incompatible libraries. We want $free readable libraries that work for all of us and libraries we can pick up and use without worrying about compatibility. Hence the production of derivative non-conforming programs from our source, whether called Shen, Shin, Shine or Shoo, is barred by the license. To give up on this is to give up on the motivation for Shen."
Whilst avoiding forking prevents splintering it can also be dangerous. OCaml suffers from a similar restriction which has seriously impeded the development and use of new compiler features like staged compilation (http://www.metaocaml.org/), type-safe marshalling (http://www.cl.cam.ac.uk/~pes20/hashcaml/) and delimited continuations (http://groups.google.com/group/fa.caml/browse_thread/thread/...). INRIA rarely accept new features into official distribution and the license prevents anyone else from doing so. Extensions have to be distributed as patches and inevitably bitrot.
Tying the long-term viability of a language (or spec) to a single owner rings alarm bells for me. Clearly they want to avoid another Scheme but I've had bad experiences in both directions.
http://shenlanguage.org/documentation/Tutorials/Shen-in-15mi...
Shen appears to be a strongly-typed functional language with a Lisp-like syntax. It supports pattern matching:
(define sum-list
[] -> 0
[H|T] -> (+ H (sum-list T)))
...partial application: (* 3) ; returns (/. X (* 3 X))
...as well as macros that can alias function names: (defmacro logmacro
[log N] -> [log N 10])
There's also an embedded "Prolog" implemenation, though I don't know how complete it might be:http://shenlanguage.org/documentation/prolog.htm
However, there doesn't appear to be an object system or a monad library, and the "lazy evaluation" system uses a typical promise/force approach, which every Scheme has had for decades. So Shen may not be well-suited to the kind of fun tricks available in Haskell and (to a certain extent) Scala. Still, it's definitely an interesting language.
puts "Hello World!"
Which I'd say is more someone trying to be cute (or pro-forma) than trying to show off the language to the curious.But, I guess that's subjective.
Apologies.
Red-black trees http://jng.imagine27.com/articles/2011-06-28-141124_purely_f...
FFT http://jng.imagine27.com/articles/2011-07-06-164206_purely_f...
Have they really studied each and every type system out there? What kind of dependent types do they have? How do they compare to Agda, Coq, Epigram?
You're right to be suspicious at extraordinary claims, but the tiniest bit of research gets you the extraordinary answers in this case. I'm quite surprised you know of Agda, Coq, and Epigram, but not Qi.
And it looks like Qi's type system is optional. If your only definition of type system power is Turing completeness, then sure, it's powerful, but it can't accomplish the same kinds of verification as Agda, etc.
Otherwise it will enter the chicken and egg problem regarding availability of libraries.
On a side: I like Haskell's take on lambda syntax (prefix with "\", e.g. \x y -> x + y).
Also, the difficulty of typing lambdas also means that writing blogs about code, or documents, or emails, will require even more pain.
I have Emacs set up to do this for Haskell, so I really have the best of both worlds (mostly): I can type the former expression but it looks like that latter.
The syntax is important for being able to write sophisticated macros that take advantage of all the language's features and for making things like genetic programming easier.
It's the non-open license (forks seem not to be allowed) which is a bit more disappointing. I guess it's a reaction to historic Lisp fragmentation but I doubt this will help adoption.
Edit: The book is quite excellent, including a neat history on why imperative languages are the norm. It's just that my eyes are in pain. :(