2,032 karma · joined April 1, 2013
http://github.com/adnelson
How do you mean?
I guess all the folks in Xinjiang just don’t love freedom as much as you do.
For another example, ‘cmd | cat’ is often not the same thing as ‘cmd’, because a command can inspect whether stdout is a tty or not and alter its behavior. This is why ‘ls’ normally outputs all in one line, but changes to one-per-line when used with a pipe (e.g. grep).
The other issue that comes to mind is that bash provides multiple concepts of “monadic” sequencing; not just with pipes but with the && and || operators, if logic, for/while loops, etc, which form a more traditional “imperative programming” monad. Perhaps bash could be considered then to be a nested monad (monad transformer?) but I’m not sure how precisely you could model its semantics while keeping things elegant.
But yes, in general you can view the shell as a monad, and there are libraries in Haskell which do exactly this (Shelly and Turtle come to mind). In general, the divergences from a purely monadic model come from the fiddly bits of real-world programming which can cause edge cases.
The whole idea of using the terms “correct” and “check” with things like art seems flawed out of the gate.
Plenty of languages have been developed without major corporate backing (especially in the beginning). Off the top of my head, elm, elixir, Haskell, ML, ruby, python, coffeescript, purescript, Idris, Agda, pony and I’m sure many others were developed at least initially by hobbyists and/or academics.
I honestly don’t know a whole lot about Eve. Maybe it was too large in scope to be a side project or fully volunteer-driven. But, even if that’s the case, that’s one of the main things academia is for; perhaps Chris should go for a PhD instead of a startup. I’m sure there are plenty of schools which would give him ample time and resources to work on it for research.
I definitely think you could have left out the “holding the door for feminists” part though.
First of all, the definition of "readable by non-Haskell programmers" will always be somewhat subjective. Depending on their background, aptitude and motivation, many non-Haskell programmers can understand Haskell code just fine.
Setting that aside, the techniques described in this blog post simply wouldn't be possible to express in any of those languages. Just having static types is not sufficient. Even in vanilla Haskell, most type-level programming techniques are not possible to express, and certainly the type systems of Java etc are not capable of it (without significant extension).
Yes, definitely there can be valid reasons to write your own language/compiler etc. Of course, the size of the Facebook code base, not to mention engineering team, put it in a clear class of its own. And the Hack project was run by people with extensive experience in compilers and type systems, not a summer intern... hah. But yeah, it’s not a bad idea in all cases. Facebook, google, Microsoft and many others have invented new languages and/or written compilers. And I’m sure there are valid reasons for a small organization to do it as well — but I fail to see what made it justified in this case. Then again the product didn’t go belly-up, so there’s that.