ページ

2012-11-29

これが・・・ 俺の答えだ!!!! 〜The functional language〜



何故、関数型が美しいのか。それは自分の行いたい処理が一片の無駄無く記述可能だからだ。
例えば、ある集合Sの各々の要素s0、s1、s2、snに対して、一連の操作を行うとしよう。

C言語等ではこの処理を行う為にforだの要素数だの余計な概念が沢山入る。
更にはポインタだのメモリを確保だのという話になってしまう。

ただ、

  ”任意の集合に対して一連の処理を行いたい”

それだけなのに、世界はどうしてこんなにも醜いのか。。。


しかし神は我々を見捨てない。

神は我々に関数型言語を与えてくれた。

関数型言語は良い。”一連の操作”その一点のみに集中することが出来る。

ある集合Sに対してmap{f()}と言う処理を用いることで、集合Sをf(S)→f(s0)、f(s1)、f(s2)、f(sn)という形にすることが出来る。

この時のf()こそが我々、人類のやりたかった処理そのものなのである。


更に一歩話を進めることにしよう。

先に行った処理は任意の集合の”全て”の要素に一連の操作を行った。

次は任意の集合の”ある条件”に一致した要素に対して処理を行うことにしよう。

この処理をC言語などで書くとfor文の中にif文が入るだろう。
もうそれだけで汚い。しかもifで判断するということはbreakやcontinueなどの制御も入るだろう。
恐ろしく汚い。

更に言わせてもらおう。
愚かなる人々はifの条件の中にデータに対する操作を書いてしまうだろう。
これは要素の抽出と、その要素に対する処理が分離されておらず非常に可読性が悪い。

ソースコードを追いかけた時、自分の目線はforの間で目が回るほど上下し、
ifの中ではデータに対する処理が行われ、もはや我々が望んでいたコードの美しさは何処にも存在しない。

breakやcontinueなどが視界に入った暁には目眩がするだろう。


「プログラムは上から下に実行される」など誰が言い始めたのだろう。これほどまでに汚い世界なら僕は生きる必要性を感じない。

しかし、その言葉は関数型言語を作った人が言い始めたのだろう。

先の処理も関数型言語を使えば、もう目を回す必要はない。

filterという関数を使えばある集合Sから、部分集合Tを生成することが出来るのだ。
for文などは必要ない、filter関数を実行した次の行では”ある条件”に一致した要素のみで構成されている集合が出来ている。

その後にmapを実行すれば良いのである。

「プログラムは上から下に実行される」

それは全人類の希望への答えだ。

0 件のコメント:

コメントを投稿