関数型言語は何故普及しないのかを考える
■ このスレッドは過去ログ倉庫に格納されています
0301デフォルトの名無しさん
2010/11/12(金) 07:49:51> その例だと、他の流れが見え難くなる気がします
そのように要求すれば、それを可能な限り満たすように記述できる仕組みを作ればいい。
Haskell はそれができる(完璧とは言い難いが、記述方法に関してはかなり柔軟だ)。
あの例は、ピッチャーとバッターとキャッチャーのボールを通した「関係」を
プログラムで示した。
さらに、バッターが撃ったボールと野手との関係を示したかったら、それらを追加して、
先の関係の結果と今回の関係の結果を合成すればいい。
(ここではインデントが正しく表示できないかもしれん)
result <== field ( (catcher <== batter <== pitcher)
<+> (batter ==> [fielder1, fielder2, ・・・]))
<+> 演算子で2つの関係の結果を合成する。
べつに一気に一つの式にしなくても、分けて記述してもいい。
更にイニングの関係を被せればゲームそのものも表現できる。
(それにはもう少し洗練させる必要があるが)
ボールが見えないのは、「ボールを通した関係」を表してるんだ。
このプログラムを書いてる者や見る者に取っては、コメントにでも書いておけば
ボールを通した関係であることが明らかだから、記述する必要がない。
記述したければ記述するように書き換えできるけど、冗長だ。
あくまで、短時間で思いついた書き方を示しただけだ。
もっと直感的に書ける方法も当然あるだろうな。
Haskell ならそれが「考えやすい」し「設計しやすい」。
■ このスレッドは過去ログ倉庫に格納されています