I gave quick look at the example. First reactions coming from OO languages and Elixir:<p>I can imagine that this<p><pre><code> def addCandidate(A ~Int, B ~Int) do
</code></pre>
means that addCandidate has two arguments of type Int, but what does the ~ mean? I'll have to read the docs.<p>However I have really no idea of the meaning of<p><pre><code> def bar(arithFn ~Function(Int -> Int -> Int)) do
</code></pre>
It's a function bar taking arithFn as argument, which is a function with... what arguments?<p>From the demo program it looks like a function with two int arguments returning an int, but why the -> signs and why isn't addCandidate defined as (Int -> Int -> Int) too? Where is it's return type. Maybe inferred?<p>It's quite puzzling and there are no explanations about that in the README.<p>Is the ~ necessary? Could it be removed and save one character that's not even on some keyboards around the world?<p>Apart from that lack of explanations, it could a perfectly nice language and it's a great project for sure.
Nice project.<p>As was already mentioned, the main benefit of Elixir seems to come from BEAM, (Erlang VM) and its associated cockroach-like properties. There's also Crystal (<a href="https://github.com/crystal-lang/crystal" rel="nofollow">https://github.com/crystal-lang/crystal</a>), if what you want is a Ruby-inspired language with static typing and compilation to native code.
> Effort put into rhine-ml: 2 months<p>> Effort put into rhine: 1 year, 1 month<p>Props for the effort put into this! I came across rhine-ml a while ago and thought it would have been a nice, native alternative to Clojure. Both of these projects look very well thought out.<p>Curious, is this a learning project? It seems that way considering you go into detail about the inner workings.