So you're learning OCaml
hyegar.com
hyegar.com
Once you want to use some of the more advanced features (Modules and Functors come to mind), you can switch back to OCaml relatively easily since they are so similar.
https://github.com/rizo/awesome-ocaml
(via: https://twitter.com/ocamlmooc ).
The lack of a standard build system is annoying yeah; I tried for a while to make do with just ocamlbuild and a Makefile, but eventually gave in and learnt Oasis, and it does the job just fine for my purposes, just feels a bit messy (compared to something like cabal, which at first sight hides a lot of the intermediate steps).
[1] http://the-lambda-church.github.io/merlin/destruct.ogv http://the-lambda-church.github.io/merlin/merlin-vim.ogv
FWIW I basically use the same _oasis file over and over again, it literally takes only 5 minutes to set up a project's needed boilerplate, _oasis, .merlin and opam directory.
https://www.france-universite-numerique-mooc.fr/courses/pari...
Session 0 is just a lot of introductory stuff (history of OCaml, etc.), so it shouldn't be difficult to catch up.
(which are pretty good at guarding their students' privacy.. though you should definitely check their policies before signing up)...
As someone who did a lot to market certain OCaml libraries, I have seen similar interest in some of the "modern" SML libraries I have played around with. Not a ton of work has gone into both of these, but you may be interested to look at two projects MonoML[0] and SSMLS[1].
These are some /very/ minimal projects I've worked on in SML in the past few months to gauge how well SML might work as a modern, web-friendly, higher-level language. The results are certainly not completely disappointing.
Edit: Oh also! HamletML[2] (yes, written by the 1ML guy) is a very interesting ML implementation that would probably be a great way for work on modern language features. Not that I know what I'm talking about, but it could also provide the framework for an even more powerful backend/optimizing compiler.
[0] https://github.com/eatonphil/monoml
Adam Chlipala has a writeup[3] on comparing SML and OCaml that may be of interest to the discussion.
[0]: https://github.com/xapi-project
[1]: http://anil.recoil.org/papers/2010-icfp-xen.pdf
Barring that, "Successor" ML is cleaning up some deficiencies in the original standard, and ML implementations are starting to integrate the changes.
But yeah, a strict ML with the pristine syntax of SML; the modular implicits coming to OCaml; the innovative ideas in 1ML -- now that would be a great language.
Sigh, back to Scala...
It'd be nice to have a job working in OCaml.
* merlin-mode, for autocompletion
* ocp-indent, for external code formating... think running gofmt on every enter press (surprisingly, it's fast enough unless your file is 2k lines long)
* tuareg-mode (everything else, REPL etc.)
* flycheck-ocaml for syntax checking
The "real" IDE plugins aren't even close and that's saying a lot since the hodge-podge of addons I just listed isn't
The default Emacs user experience is awful so if you're a Vim user, just install the "evil" package and enable it inside Emacs by doing M-x evil-mode, then you have Vim inside Emacs. Or use Vim, but the experience isn't as complete w.r.t. tooling[3]. There's always Spacemacs as well[1].
[1] https://github.com/syl20bnr/spacemacs
[2] https://github.com/the-lambda-church/merlin/wiki/emacs-from-...
[3] https://github.com/the-lambda-church/merlin/wiki/vim-from-sc...
http://www-fp.cs.st-andrews.ac.uk/tifp/TFP2012/TFP_2012/Turn...
It's not directly related to OCaml, but it retrace the roots of the ML family too, so I thought it could be of interest.
It's not a bad thing, but Rust has very little in common with Haskell/Ocaml; aside from stealing a couple of good ideas.
No typeclasses (and associated goodness), GADTs, HKTs, Monadic IO, first class functions, generic deriving, higher rank types, existential type, etc. These are bread-and-butter features in day-to-day Haskell work. Rust's type system isn't powerful enough to build the vast majority of the tools that Haskell programmers use every day.
I don't mean this as a criticism; The Rust design seems solid. But different priorities lead to different trade-offs, and the end result is a very different type system.
Also, traits objects are existential types, and closures & functions are as first class as they are in Haskell (main difference is a bit more verbosity).
There is, maybe, grounds to say that all languages with S-expressions, first class functions and garbage collection are just a type of lisp.
But I would not say that all languages with strong static typing, some form of type inference, algebraic data types, patterns matching and functional programming features, are a dialect or OCaml, or ML.
Haskell has these too, but it has more stuff like more emphasis on immutability and purity unlike Rust and OCaml.
Also, the first Rust compiler was written in OCaml.