4 ms·
Sad to see no mention of the impure ML languages (OCaml, F#, PureScript, etc). For me these strike a great balance between powerful abstractions and the ability
by adgasf 7y ago
Sad to see no mention of the impure ML languages (OCaml, F#, PureScript, etc). For me these strike a great balance between powerful abstractions and the ability to throw things together.
- maest 7y agoAlso no mention of anything in the APL family, sadly.
- tluyben2 7y agoIndeed. The relevant part of k \h can be put on one side of a postcard.
- scottlocklin 7y agoAPLs are such a different paradigm from the run of the mill stuff ... “APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.” -Dijkstra
- tluyben2 7y agoI think he is rolling over in his grave as JS is what he actually describes there and most of the world are coding bums now (learn JS in 1 hour, create undisciplined misery the rest of your 'career'; something Dijkstra, and his pupils, are vehemently against, yet 99% of people do now and it is considered ok as 'getting shit done', nevermind the reactor meltdowns it causes).
- gameswithgo 7y agof# has the unit feature he wishes existed. and rust wasn’t mentioned!
- hhas01 7y agoThe article’s title says “perfect programming language”. “Impure” means the language design is by definition compromised. The moment you allow imperative behaviors to leak into a declarative system it loses its ability to reason reliably about operations over time; and you’re back to flying seat-of-your-pants a-la C &co. Haskell at least has the good grace to firewall any imperative crap so that the remainder of the program can still be reasoned about. That doesn’t mean OCaml and F# can’t still be useful, in the same way that C is still useful, but they cannot be more than the sum of their own limitations; they are already evolutionary dead-ends. Thus article is correct not to expend any space considering them.
- LessDmesg 7y agoThis compromise you speak of is called practicality. Ocaml/F# may be a dead end in evolution but a great success in appicability. The Haskell family OTOH is a gleaming pathway of continuous development into nowhere.
- abathologist 7y ago> The moment you allow imperative behaviors to leak into a declarative system it loses its ability to reason reliably about operations over time; and you’re back to flying seat-of-your-pants a-la C &co By your (imo, extremist) line of reasoning, wouldn't the existence of `unsafePerformIO` mean Haskell itself "looses its ability to reason reliably about operations over time"? I think a more reasonable position allows for gradations of reliability, and appreciates the benefits of encouraging pure computations while allowing room for judicious use of benevolent side effects. > they are already evolutionary dead-ends That is patently false, imo. OCaml has a number of interesting features which most statically typed FP languages are yet to explore (e.g., polymorphic variants, (typed) named and optional arguments, first-class modules, binding operators). More to the point, ongoing development on a novel approach to multi-core, native support for algebraic effects, and modular implicits, testify to it being a live evolutionary branch. OCaml aside, innovative languages and approaches like like F, 1Ml, Frank, BER MetaOcaml, and Rust seem to give clear evidence that we still have much to learn from impure* dialects of ML.
- 7y ago
- deleted 7y ago[deleted]