Some remarks because I don't want to make pull request
Kakadu opened this issue · comments
Guaranteed Tail Call Optimization with OCaml +
Pattern matching with OCaml +
Parametric Polymorphism with Java +
Rename Laziness
to Laziness by default
or something because currently reader can get intuition that laziness is not possible at all. The same for Pure functions
.
If Parametric Modules
meant to be what I think it is then OCaml has +
Pattern Matching Alternatives
needs clarification. If meant to be what I think it is then OCaml has +. The same for Pattern Matching Variable Introduction
Uniqueness Types
need a link to description
what about "provably pure functions"?
Parametric Modules mean modules that may be parameterized, like ML functors.
Parametric Modules mean modules that may be parameterized, like ML functors.
Then OCaml has + there
what about "provably pure functions"?
It's rather hard to prove this, because of compositionality issues. I think that Haskell assumes that function is pure when it doesn't have IO (or any Monad constraint) in it's type but it's unlikely he can prove it. Maybe "functions are pure by default" or something?
@cblp What do you mean by Pattern Matching Variable Introduction
? I can't even google it.
@Bannerets It means one can introduce variable inside pattern-matching syntax.
Positive example: Haskell
let (x, y) = example
Variables x
and y
are introduced here in case of a successful match.
Negative example: C++
int x, y;
tie(x, y) = example;
Variables x
and y
must be defined before using tie
.
Then OCaml has + in Pattern Matching Variable Introduction
too
Also, can we move Pure Functions
to Supporting Features
block?
And what about adding feature OOP support
?
Let's discuss "also" topics in separate issues.
created #5
Looks like I addressed everything from this issue. Now closing. If something else is left please open new issues.