3 ms·
This caught my attention... - ambiguous syntax: care to give a few examples? - inconsistent & incomplete standard library: the library that comes with the com
by toolslive 12y ago
This caught my attention...
- ambiguous syntax: care to give a few examples?
- inconsistent & incomplete standard library: the library that comes with the compiler is basically the library of the compiler. Opam probably has everything you need.
- shitty REPL. use utop or use emacs. Anyway, I do think people on windows are better of using F#. But that's another discussion.
- tomp 12y agoThis is an nice example I put together about the ambiguous syntax: if a > 0 then print_endline "a > 0" ; match a with | 0 -> print_endline "impossible" | 2 -> match b with | 0 -> print_endline "2, 0" | _ -> print_endline "2, not 0" | 3 -> print_endline "3, something" | _ -> print_endline "something, something" ; print_endline "done" You can see the rest of the discussion here: https://news.ycombinator.com/item?id=8497740 https://news.ycombinator.com/item?id=8497740 OPAM saves lives, that's true, but one still wishes there was a nice library of standard data structures; I use Batteries, which inherit the inconsistency of the standard library (for the sake of compatibility), the other real alternative is Core, which is undocumented.
- mercurial 12y agoI agree about the standard data structures, but there is no getting around the fact that it's not going to happen. You could have a look at Containers[1] if you want a break from Batteries. 1: https://github.com/c-cube/ocaml-containers https://github.com/c-cube/ocaml-containers
- yodsanklai 12y agoI don't see it as a problem. This type of imbricated "match" is so common that you learn pretty fast to always use parenthesis. Also, it's often a good idea to try to match (a,b) instead.
- gnuvince 12y agoNot to be that technically-anal guy, but the syntax of OCaml is not ambiguous from a CS point-of-view. However, it does have rules that can be counter-intuitive to humans.
- eta_expand 12y agoIn that particular example, the only misleading things are the indentation, and the lack of block delimiting for the inner match. The language grammar is accepted by the grammar compiler bundled with OCaml, which doesn't like ambiguous grammars.