(And then there's https://reasonml.github.io, which I work on)
I actually tried to use it very recently in a new project at my workplace, but unfortunately I decided not to. I found some fundamental things were lacking.
I didn't find documentation about how to interact with npm libraries (e.g. how do I use a websockets library in Reason? Do I have to create my own bindings? If so, how?).
There also seemed to be nothing similar to async/await in Reason/Bucklescript yet and I couldn't find out how to use promises.
I'll definitely reevaluate it in the future. I think it is an awesome project with great potential (along with Bucklescript which is awesome too).
You can also check the community's work: https://reasonml.github.io/community/
import 'mod::memcmp': O(1);
where O(1) is big O notation.I could see this being used to choose between allocators or schedulers given specific requirements.
IMO, Koka (or something similar) has more potential to become a mainstream language than "traditional" FP languages (Haskell, OCaml, Idris, etc.).
Effects seem to be easier to understand than monads (at least on a superficial level) and more modular (I don't have a lot of experience with Haskell, so take that with a grain of salt).
Its syntax is also very close to C-like languages.
Taken from the Koka book[2]:
`square1` is a pure mathematical function, so its effect is `total`. `square2` has a side-effect because of `println`, so its effect is `io`. This means that `square2` can raise exceptions, not terminate, be non-deterministic, read and write to the heap, and do any input/output operations.Note that Koka can infer effects, so these annotations are optional.
[1]: https://www.microsoft.com/en-us/research/project/koka/?from=...
[2]: https://koka-lang.github.io/koka/doc/kokaspec.html#sec-effec...