cblp / funlangs

Functional languages index

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

Looks like I addressed everything from this issue. Now closing. If something else is left please open new issues.