11. Of course, typed functional programmers like to boast at how good typed fp is at writing compilers and making everything composable, but their metaprogramming tools utterly suck and are completely non-composable. Liars, hypocrites or just morons?
-
-
Replying to @Ngnghm @dyokomizo
12. Sure, OCaml has a super fast compiler, whereas Gerbil Scheme's is dog slow (it calls GCC). But guess what? With Gerbil I can do all that work incrementally at the REPL without having to recompile from scratch every time because a type has changed, thus losing all debug state.
2 replies 0 retweets 3 likes -
Replying to @Ngnghm @dyokomizo
13. Interactive state? Oops, all objects are opaque by default. That all makes debugging all the harder, and/or forces yet more boilerplate on you for string converters. 14. Parametricity is way cool, but makes data even more opaque, and then you need to break it for debugging.
1 reply 0 retweets 2 likes -
Replying to @Ngnghm @dyokomizo
15. Configuration files? User specified computations? In OCaml you'll soon reinvent your own crappy evaluators. All the advantages of static typing vanish, and all your tooling. Or you reinvent the world, badly. Meanwhile your users must use a crappy language.
2 replies 1 retweet 1 like -
Replying to @Ngnghm @dyokomizo
16. GADTs... very cool, but not very usable: too powerful for a lot of the tooling to work, yet too weak to express the things you really want to say.
2 replies 0 retweets 4 likes -
Replying to @Ngnghm @dyokomizo
17. I never understood why people complained so much about the OCaml syntax, until I had to use it. Ugly, indents poorly. Case-sensitive, ugh. And is there really no way to specify a module for an infix operator without including the operands?
3 replies 0 retweets 2 likes -
Replying to @Ngnghm @dyokomizo
18. OCaml has no typeclasses, so you keep shadowing modules with newer modules that extend them… which is not modular. All the troubles of class inheritance, except without the benefits of late-bound fixed-points. To avoid copy/paste you need plenty of higher-order scaffolding.
2 replies 0 retweets 5 likes -
Replying to @Ngnghm @dyokomizo
19. Opaque types mean that it's impossible to extend a library. Thus so many forks and reinventions of libraries and datastructures, yet none is ever perfect and complete for everyone's needs, thus more pointless forks and bad reinventions—or accepting badness.
1 reply 0 retweets 3 likes -
Replying to @Ngnghm @dyokomizo
20. At least Haskellers have the abstract pure form of Category Theory to aspire to in defining their libraries, etc. But IIUC, this approach requires higher kinds that are not available in OCaml.
2 replies 0 retweets 2 likes -
Replying to @Ngnghm @dyokomizo
21. The best infix operator is |>, that allows you to, albeit locally, replace the demonic right-to-left evaluation (contravariant with how types are rightfully written) with god-given left-to-right evaluation. It also makes debugging nice: just pipe into a printing identity.
1 reply 0 retweets 1 like
21b. The above is a point where OCaml sucks a tiny bit less than Lisp, that has the same wrong, prefix, polish notation by default, but lacks a syntactically cheap way to right the syntax and evaluation order together.
-
-
Replying to @Ngnghm @dyokomizo
22. Schema update? In OCaml, it's a global affair, and either programmers will have to keep using new names for the same stuff, or the old stuff will have to lie about its name. You'll end up reinventing your own poor man's slow dynamic typing helpers or unsafe magic tags.
1 reply 0 retweets 1 like -
Replying to @Ngnghm @dyokomizo
23. Then to deal with the lack of reflection inside the language and inside a process written in it, you'll likely reinvent a reflection and management infrastructure OUTSIDE the language, using outside processes reliant on the dirtiest kind of reflection, that offered by the OS.
1 reply 0 retweets 1 like - 2 more replies
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.
Read my blog!