600000007

プログラムと折り紙のブログです。

函数プログラミングの集い 2012 in Tokyo

函数プログラミングの集い 2012 in Tokyoに参加してきました。

初めてのお茶の水女子大学でしたが、関数プログラマーっぽい人の後をつけていったら無事到着しました。
我ながら無駄な眼力です。


個人的に一番面白かったのは、@ksknacさんの「関数プログラミングの今昔(仮)」でした。
結局関数型って何なのか?というもやもやしていた気持ちが晴れました。


関数とは何か?

関数とは、入力集合と出力集合を1対1で対応づけるもの。
=> 入力要素に対して1対1で対応する要素を返却するもの。

と理解しました。
確かに関数型プログラミングで推奨されている作法や、コレクションのメソッドは、この定義を満たしていますね。
といってもScalaしか知りませんが・・・。


関数型言語ではなく関数型プログラミング

ほんとにすっきりする話でした。
関数型とはプログラミングスタイルであって、特定の言語に依存する物ではない。
関数型を実現しやすい言語はあっても、関数型しかできない、関数型ができない言語はないんですね。

これはオブジェクト指向に関しても同じ事が言えます。
オブジェクト指向も同じくプログラミングスタイルであって、どんな言語でも理論上はオブジェクト指向で書けますよね。
実は自分は、Cでオブジェクト指向プログラムを書いていた時期があります。
まあ実際はオブジェクト指向の体をなしてはいませんでしたが・・・不可能ではないのです。


関数型の歴史

おかげさまでScala以外の言語にも興味がわいてきました。
コップ本を読み終わったら次は大統一言語Haskellに狙いを定めます。
あとCommonLispも・・・使用言語アンケートではびびって手を挙げられませんでしたが、今度はちゃんと挙げられるように復習しておきます。