2004-10-21 03:29:42 +0900 (1409d); rev 3
だいたい合ってりゃいいよね、 てな感じのいいかげんな Haskell FAQ。 手続き型言語ユーザの視点で書いてます。
「はすける」みたいです。 ちなみに論理学者の Haskell B. Curry に由来するそうです。 「カリー化」の Curry もこの人の名前から来てます。
そうです。
関数がプログラミングの中心にあるような言語のことです。 定義は人によってズレがありますが、 少なくとも C や Java は関数型ではなく、Haskell は確実に関数型であり、 ML も関数型であるというところまではまず間違いなく一致しています。 Lisp を関数型に入れるかどうかは人によって違うようです。
副作用のあるコードをいきなり書けないところです。 書けないわけではありません。 ここを深くつっこむとわけがわからなくなるうえに宗教戦争が勃発するので、 あまりつっこまないでください。
委員会があるみたいです。
「よい」の定義によります。が、一般的な違いを言うならば、 副作用のあるコードは ML のほうが気軽に書けること、 Haskell は非正格 (non-strict) である、という二点が挙げられます。
プログラムがどこから評価されるか決まってない、という性質です。
書けるんです。そこが面白いとこです。
昔からマイナー分野は内ゲバが激しいですね。
Common Lisp プログラマと Scheme プログラマの関係と同じくらいです。
500 人くらい? (2003 年現在)
コンパイラなら GHC、インタプリタなら GHC についてる ghci か Hugs。 どちらもそれなりには安定してます。
Haskell98 というのが最新です。
あんまりありません。 以下の「リンク集」のところにライブラリ集へのリンクがありますので見てください。
どうやら今は移行過程にあるようです。 hierarchical library という階層化されたやつが新しいもののようですね。
ないみたいです。
UNIX コマンドの例を下のほうに置いときます。 またコンパイラの GHC は Haskell 自身で書いてあります。
モナドとは何か……と考えるより、 「モナドはどう使うのか、どう動くのか」と考えるほうが幸せになれます。
最もよく見かけるのは IO モナドです。 これは I/O をするときなど、副作用が発生する場合に使います。 ただし、それはたまたま I/O に使えるから使っているというだけで、 モナドと I/O が必ずしも関係あるわけではありません。
だからつっこんじゃだめだってば。
UnixCommandInHaskell にいくつか実例があるのでそれを見てください。 「IO」と書いてあるところで IO モナドを使っています。
まったくです。
おもいきり簡単に言うと、副作用が起きないという性質です。
いいという人もいますし、そのほうがいいプログラムもあります。
そうです。
そういうプログラムには Haskell は向いていないかもしれません。 しかしそういうプログラムばかりではありませんし、 ハードウェアが速くなれば問題にならないということもあります。
日本語のメーリングリストがあります。 http://www.sampou.org/cgi-bin/haskell.cgi の案内を見てください。
動かすプログラムと、「速い」の基準によります。 しかし一般的に言うと、カリカリにチューンした C よりは遅く、 Perl や Ruby などのインタプリタよりは速い、という感じです。 ただしこれは GHC でコンパイルした場合で、Hugs はめっちゃ遅いです。
O'Haskell というオブジェクト指向拡張があるみたいです。
http://www.math.chalmers.se/~nordland/ohaskell/
激しく同意! ぜひ自分でもサイトを作ってください。
関数型ってなんとなくかっこよさそうだから。
そんな細かいことを気にしちゃだめです。
Related Pages: HaskellPages
system revision 1.162