Closed pasberth closed 11 years ago
ただし
map x -> x list
のようにラムダ式を書くと Applox Applying では
map ((x -> x) list)
になるのが注意。でもそれは
#[ a -> b : * -> * -> * = !lambda a b `;` ]
これで回避できる。
ただそう簡単には採用できない大きな変更である。 けっこう検証必要
Applox Applying は空白文字がマクロであるとも考える事ができる。
#[ f ` ' x : * -> * -> * = !if !atom? x !funcall f x !lambda y !funcall f !funcall x y ]
と空白文字を定義できるとすると、
f x y
は
f ` ' x ` ' y
なので、 Applox Applying をマクロでエミュレートできる。
不採用で良いと思う。
Applox Applying はカッコを省くために非常に強力な仕様だと思う。
すこし検証してみた所 Applox Applying は Applox という言語にだけでなく Macra にも組み込めそうだと思った。
Applox Applying はどちらかといえばカリー化のような機能で、構文に縛られず、 Lisp の構文にも組み込める。
Applox Applying はもともと構文の優先順位がある言語にも適用できるのである
具体例をあげると
https://gist.github.com/4223441
の
は、もし
if
およびnot
が関数なら 便宜上無適用リテラルをと書くとして
ただ、
if
およびnot
がマクロなら、 マクロのカリー化ができない仕様のせいで カッコは省けない事になる。