https://news.ycombinator.com/item?id=8250316
https://news.ycombinator.com/item?id=8359796
https://news.ycombinator.com/item?id=3117235
Also, check out Fogus's summary of Lisps:
http://blog.fogus.me/2011/05/03/the-german-school-of-lisp-2/
I signed up as a donor who gives 5 pounds a month to this project, because the ideas going into this project are extremely innovative and deserve support.
Meanwhile I'm an electronics experimenter kind of guy and I currently have some weird semiconductors arriving from China where the entire order including shipping was only about $45 (I believe the shipping portion was $8). Admittedly a very small and light packet compared to a textbook, but still...
In an online, ebook, internet world, something is wrong with $64 shipping charge from the UK yet only $8 from China. Maybe a helpful soul could have a pallet of books shipped to China, then send them around the world for the usual Chinese shipping "pocket change" cost.
Doesn't Amazon (and others) have a print-on-demand service that would be more cost effective and not waste the fuel of flying 20lbs of paper across an ocean?
There's also online resources for learning that if you have enough functional programming background ought to be able to get you started: http://www.shenlanguage.org/learn-shen/index.html
Added: it's a 400 page print on demand book, I don't have a scale that's suitable for its weight range but the first edition, which has its form factor, is well over a pound.
(http://www.fast-print.net/bookshop/1506/the-book-of-shen-sec...)
That Amazon will ship me print on demand in two days for "free", lulu charges $4, my favorite electronic seller in China charges $2 per item (admittedly each item is lighter than a book) I mean, really, guys?
I'll buy the book, looks interesting, I'll just wait until distribution picks up. I thought about getting a unlicensed ebook copy from "the usual sources" and just donating about 25 bucks to the project, but I'll probably wait.
There's a business concept where you never say "no". If you don't want to do something, like, say, ship outside the UK, you just charge "F you money", or whatever the UK translation is, as a fee. "So how about you rewrite that backend in cobol?" "No problem, but that's going to be kinda expensive, like $750/hr, just so you know" "In that case, lets not do that" I see those kind of shipping charges and I hear this message being delivered. Its not that I can't afford it, its that I don't like being told to F off. Someone doesn't want to ship internationally, in 2015, well, ok, but then they should not be offended if they get made fun of a little bit.
Also, it's pretty trivial to get set up on Lulu and even Amazon and other distributors these days, all of whom can print and ship inside the U.S. and charge local shipping (and many other countries as well). If he's unhappy about the cut they take, he could raise his price by at least $10 (what is saved on shipping) and probably more.
I'd prefer to pay $30-$40 for a book on Amazon that I can use Prime for, than $15 + $10 shipping for a book that may or may not arrive from overseas, and will take a week or more to do so.
Can anyone enlighten me?
Shen is a portable functional programming language that offers
pattern matching,
lambda calculus consistency,
macros,
optional lazy evaluation,
static type checking,
an integrated fully functional Prolog,
and an inbuilt compiler-compiler.
Among other things, it's an attempt to create a Lisp that incorporates some of the things you find in functional languages like Haskell.Here's an essay, from an invited talk for the 2009 European Conference on Lisp, on the motivations to create Qi and then Shen: http://www.lambdassociates.org/blog/nextlisp(1).htm
Now if only the (cheap!) book on Shen was available as a DRM-free epub book.
As for the book, right now the work on the project by the author is supported by direct patronage or buying his books. And there's much more in the book than just "leaning Shen". Here's the web page for it: http://www.shenlanguage.org/learn-shen/TBoS/
Which includes the preface, table of contents, and conceptual dependency table, i.e. what previous chapters you need to have mastered to understand each chapter.
From the chapter titles and subtitles, here's stuff that goes substantially beyond "learning Shen":
Higher Order Functions (e.g. partial application and currying)
Non-determinism (non-deterministic algorithms)
Shen-YACC (sigh, needed for e.g. pattern matching)
Lambda Calculus
Writing Good Programs
Sequent Calculus
The SECD Machine
Shen Prolog (12 pages on Prolog per se)
The Compilation of the Sequent Calculus
And there's a lot of material on types (one of the features of Qi/Shen). So you get a whole lot of CS exposition in the context of Shen.However, it looks like it has a lot of interesting features that people might want to use. For example, it can be trivially embedded in pretty much any other language by implementing a handful of core functions. It has an embedded prolog DSL. It has pattern matching, static type checking, lazy evaluation.
If you wanted to use it commercially and safely, you'd have to spend quite a bit on an IP lawyer with no guarantee he'd give you an OK. In a universe with so many good languages, many with much bigger communities (in part because of the license), with well understood and often tested in court licences, it's a non-starter.
The intent is fine, everybody's code will run on your port, modulo bugs, and is plainly stated in the last line of the licence: “Thou shalt not break the spec” It's the execution by someone who's a computer scientist, not a lawyer, nor very familiar with IP law.
Yes, Lisp is the One True Way, but that doesn't mean it's the source of all good ideas in CS.
If I was all in on a language and not a jack of all trades, I'd love those special features. As is, I like a simple list of reserved words that I have a half chance of remembering. Glad to see this funding concept worked for the community.
My solution to the problem has been to setup my development environment to provide the requisite autocompletion and linting (I use emacs with the brilliant spacemacs package to be able to have "the one IDE for all languages").
It takes a bit of setting up for each language you use, but if you do the setup on an as-and-when basis it's not that bad (and "starter-packs" that have packages that work together are great)
Someday when I get sick of firing up python to quickly check that you append() to lists instead of push or add...
My solution to it has been to setup my development environment to provide the requisite autocompletion and linting (I use emacs with the brilliant spacemacs package to be able to have "the one ide for all languages").
It takes a bit of setting up for each language you use, but if you do that as primary setup on an as-and-when basis it's not that bad (and "starter-packs" that have packages that work together are great)
My solution to it has been to setup my development environment to provide the requisite autocompletion and linting (I use emacs with the brilliant spacemacs package to be able to have "the one ide for all languages").
It takes a bit of setting up for each language you use, but if you do that as primary setup on an as-and-when basis it's not that bad (and "starter-packs" that have packages that work together are great)
My solution to it has been to setup my development environment to provide the requisite autocompletion and linting (I use emacs with the brilliant spacemacs package to be able to have "the one ide for all languages").
It takes a bit of setting up for each language you use, but if you do that as primary setup on an as-and-when basis it's not that bad (and "starter-packs" that have packages that work together are great)
My solution to it has been to setup my development environment to provide the requisite autocompletion and linting (I use emacs with the brilliant spacemacs package to be able to have "the one ide for all languages").
It takes a bit of setting up for each language you use, but if you do that as primary setup on an as-and-when basis it's not that bad (and "starter-packs" that have packages that work together are great)
My solution to it has been to setup my development environment to provide the requisite autocompletion and linting (I use emacs with the brilliant spacemacs package to be able to have "the one ide for all languages").
It takes a bit of setting up for each language you use, but if you do that as primary setup on an as-and-when basis it's not that bad (and "starter-packs" that have packages that work together are great)