Concurrent Clean : Re: reduceとtoList

先の話は、ちょっと間違ってるな。
同じ高階関数でも、mapはマクロではない。マクロで定義しているのはfoldl/foldrだけだ。
そういえば、この件は、Clean入門の記事を書いていたときに、一度考察していた。
foldl/foldrは、正格性解析の結果で最適な評価順序が変わる種類の関数だったので、正格性解析を適切に機能させるためにマクロにしているのでした。
http://www.geocities.jp/lethevert/clean/gettingStarted17.html
で、reduceを関数として提供してしまうと、同じ問題が起きるので、toListでリストにしてからfoldl/foldrで処理する方が効率的に処理できるケースがあるというのが正しいのかな。