ラムダ式の戻り値の型を型推論

ラムダ式の戻り値の型を作った側が毎回書くのはじゃんくさい
関数の引数に使った感じから型推論できるように対応してみた

型推論の途中で戻り値なし、またはIntってゆーのを [Void | Int] みたいに表して
関数からフィードバックを受けて最後にVoidが残ったら戻り値無しよって感じにしてみた

f:id:zenu:20180605002521p:plain

変数にバインドした時はちょっと無理
でも、よくわかんなけりゃ戻り値ありに固定してもいいかもしれない

# f1は戻り値あり
var f1 = => 1
var a = f1()
need_Int(a)

# f2も戻り値あり、いらないかもしれないけどあっても困らない
var f2 = => 2
f2()