Mono (.NET のオープンソース実装)をハックしてたり、Nemerle という言語のコンパイラをいじったりしていてすごく忙しかったのです。
ごめんなさい!これから追いつきます。
旧ヴァージョンの Fulyn はこちらへ。
Fulyn v1 は美しくないところがまだまだあったので、言語仕様をさらにシンプルにし、それでいて表現力をさらにあげます。
Fulyn v2 では、プログラムを式の列として扱います。
式には、定数、関数、代入文、パターンマッチ文、リテラルなどがあります。
型推論はもっと頑張ります。
Fulyn v2 では、ブロック自体を一つの式として扱います。
これにより、複文ラムダの実現が可能になります。
これで、関数をラムダで書くことが可能になります。
main = () => {
x = plusone(5)
putnum(x)
}
plusone = i => add(i, 1)
v1 では、定数パターンしか存在しませんでしたが、変数パターン、Cons パターンなどのその他のパターンも実装します。
変数パターンはすべての入力にマッチするので、 v1 の () => ... は廃止されます。
source = read()
result = ? source {
| 'y' => 1
| 'n' => 0
| x => { print("invalid answer: "); print(x); -1 }
}
array = [0, 1, 2]
tail_of_array = ? array {
| head :: tail => tail
| _ => []
}
あとはまだ考え中です。。
| コメント | お名前 | NameLink | |