Open pasberth opened 11 years ago
この変更をする理由は3つある
たとえば、 =>
の右に関数適用の構文を許さない事によって
f a g key => val c
が
f a (g key => val) c
のように解析できる事
もし関数適用が許されるなら
f a (g key => (val c))
と解析されてしまう
次に、 =>
の右に関数適用を許す理由がうすくなってきたから
もともと =>
の右に関数適用の構文が許されるのは
{ x => puts x }
みたいな構文ができるからという理由が大きかった。でも、もし =>
の右で中置構文を使いたかったら
{ x => puts x :infix hoge x }
これは今の仕様では許されないから
{ x => (puts x :infix hoge x) }
結局カッコが必須になる。 だから、だったら始めから必須にしちゃった方が良いという理由
あとはパーサの仕様が =>
の右で関数適用を許すのがやや汚い仕様だから、きれいにしたい
ただこの仕様の変更をする利点はそんなにない気がする。今は保留。
https://github.com/pasberth/Macra/blob/newParserSpec/Macra/Parser.hs
今このブランチにあるパーサ 検証した後マージするかもしれない。
この変更は master の examples にあるプログラムには影響はない。
prelude はかなり影響受ける。
たとえば
https://github.com/pasberth/Macra/blob/prelude/pure/prelude/map.macra
の
=>
は今まではのように結合していた。でもこの結合が
に変わる。
つまり
x => y
の y には関数適用の構文が許されていたけど許されなくなる、ということこれ次からは
のようにカッコが必須になるかもしれない。
また、
の
も許されなくなり、これも
とかにする必要あり。