関数型言語に思うこと

関数型言語を利用したアプリケーションは少ない。でももっと色々作れるのでは?という話。主にHaskellを念頭において書く。

Haskell製アプリケーションの実例。

Pugs
Perl6インタプリタ。本家よりも先に実装。
darcs
バージョン管理システム。パッチ志向。
xmonad
Window Manager。タイル志向。

関数型言語が得意なこと。

複雑な計算
当然。
リスト処理
文字列もリスト。
短期間開発
コード量自体が小さい。
分散処理
分散処理が手軽にできる。

関数型言語が苦手なこと。

インタラクティブ
正則正格評価だから。
省リソース
リソース消費量が読めない。
開発者確保
できる人が少ない。

次のようなアプリケーションなら。

入出力の対応が明確
対応関係が複雑になればなるほど関数型が有利。
入力データが巨大
分散処理が可能なら有利。

つまり、例えば。

為替や株のシステム取引
予想価格の計算式をそのまま入れればOK。
Webアプリケーション
クエリ+データベース=出力という対応で考える。とにかく開発が速く、そこそこスケーラブル。