3 ms·
> Scala, Common Lisp, C++, D, Clojure, F#, OCaml, Kotlin, etc. Out of those, only OCaml really provides “reasonable” support for functional programming. The ab
by catnaroek 9y ago
> Scala, Common Lisp, C++, D, Clojure, F#, OCaml, Kotlin, etc.
Out of those, only OCaml really provides “reasonable” support for functional programming. The ability to manipulate compound values (say, lists or trees) directly, without using objects having a queryable physical identity, is of course a prerequisite.
> it is difficult to create the perfect language, and any sufficiently complete language (...)
Maybe the excessive amount of features is the problem in the first place.
- tome 9y agoF# allows you to distinguish values by identity?
- catnaroek 9y agoYou can always query the identity of the .NET object that underlies a putative compound value.
- stewbrew 9y agoWhile OCaml might be the most reasonable in theory, AFAIK opam on Windows still doesn't work. Also its standard library is too minimal for my liking.
- loup-vaillant 9y agoUser catnaroek was only talking about support for Functional programming. And they're right: it's hard to reasonably support typed functional programming without sum types. And we're talking about a language dammit, not libraries or package managers. Let's have a good language first, then build the tools around it.
- catnaroek 9y agoIt's even worse: it's hard to reasonably support functional programming, typed or untyped, when list and tree values aren't directly expressible in the language's semantics. If you need a social convention not to query physical object identities, you have already lost.
- catnaroek 9y agoThe lack of a good standard library can always be fixed: write one. OTOH, language semantics issues can't be fixed without redefining the language, invalidating all code that has already been written in it.