【数学者】Haskellはクソ言語【オナニー】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2005/09/30(金) 01:34:050809デフォルトの名無しさん
2008/02/16(土) 23:16:48まずはこれを読んでみてくれ。
http://d.hatena.ne.jp/w_o/20061008#p1
これが面白いのは、参照透明は程度問題に過ぎないという
視点を得られる所なんだと思っている。
0810デフォルトの名無しさん
2008/02/16(土) 23:18:09Haskellの魅力は、副作用が禁じられていることじゃなくて、
副作用なんていう扱いにくいものに頼らなくても自然にプログラムを書けることだ
遅延評価は大いに使う
「ほぼ使わない」なんて思えるのはHaskellに慣れてないだけだ
例えば、C言語の典型的なfor文の使い方
for(T i = init; cont(i); i = next(i)) use(i);
を、Haskellで自然に書き直すと
mapM_ use $ takeWhile cont $ iterate next init
になるけど、これは無限リストを使っている
0811デフォルトの名無しさん
2008/02/16(土) 23:19:34あなたはネタを理解できない人なんですね
0812デフォルトの名無しさん
2008/02/16(土) 23:23:05MLが不便に思えるぐらいだ。
0813デフォルトの名無しさん
2008/02/16(土) 23:23:13ドッキリとかを真に受けるタイプの人でしょ?
>>809 がネタなんだけどね
0814デフォルトの名無しさん
2008/02/16(土) 23:26:29unsafeなんとかは、本当は参照透明なのに、コンパイラが参照透明だと見なしてくれない式を書くときに使う
そうじゃない使い方もできるけど、それは邪悪な使い方だ
0815デフォルトの名無しさん
2008/02/16(土) 23:28:060816デフォルトの名無しさん
2008/02/16(土) 23:28:41組み込みプログラムもなんのその。
0818デフォルトの名無しさん
2008/02/16(土) 23:47:33オーバーヘッドもあるしメモリも食いまくるから組み込みには全く向かないだろ
0819デフォルトの名無しさん
2008/02/16(土) 23:54:08関係ない。
組み込み=低リソースという時代は終わったんだよ。
それよりも、たとえばロケットや自動車のような用途では安全性が求められる。
0820デフォルトの名無しさん
2008/02/16(土) 23:57:18参照透明でなければ遅延評価は役に立たないよ
0821デフォルトの名無しさん
2008/02/17(日) 00:00:210822デフォルトの名無しさん
2008/02/17(日) 00:02:570823799
2008/02/17(日) 00:06:23なるほど…。
でも、遅延評価も必ず使うわけではないし、
(IOの時など遅延評価されては困る場合もあるわけですよね?)
なんというか、参照透明そのものの優位性がわからない…。
・コンパイラが作りやすい?
・数学的にみて美しい?
…、いずれも一般ユーザには関係ないですよね…。
0824デフォルトの名無しさん
2008/02/17(日) 00:07:340825799
2008/02/17(日) 00:08:33う〜ん…。これは正しいのでしょうか?
あくまでも、Haskellは参照透明であって、
そうでないプログラムは邪悪という事ですよね。
0826デフォルトの名無しさん
2008/02/17(日) 00:11:43参照透明だったら関数の返値をキャッシュできるよ
0829デフォルトの名無しさん
2008/02/17(日) 00:18:15完全にキャッシュできればプログラマはわざわざメモ化とかのテクニックを使ってプログラミングする必要がなくなる。
・・・とは言うものの、GHCでは完全にキャッシュしているわけではない。
0830デフォルトの名無しさん
2008/02/17(日) 00:19:45Cのデバッグで一番骨が折れるのが型によるバグ。
Haskellはコンパイルさえ通れば型に関しては完全に矛盾がない。
0831デフォルトの名無しさん
2008/02/17(日) 00:20:48だから、参照透明性はそんなに重大な特徴じゃないんだって
(利点が無いわけじゃない。コンパイラによる最適化がやりやすい。コードが読みやすい。リファクタリングしやすいetc)
逆に、「参照透明でないこと」(破壊的代入や副作用を認める)にも大して優位性は無いんだ
Haskellにはもっと重要な特徴がたくさんある
動作オブジェクトを利用した入出力とか、代数的データ型+パターン照合とか、型クラスとか、遅延評価とか
0833デフォルトの名無しさん
2008/02/17(日) 00:29:07>参照透明性はそんなに重大な特徴じゃない
そうですよね…。
でも、なんか、かたくなに参照透明性を守ろうとして
余計わかり難くなってる気がするんですよね。
全面的な参照透明性を捨てた方が、
すっきりするのではないでしょうか…?
0835デフォルトの名無しさん
2008/02/17(日) 00:30:17http://itpro.nikkeibp.co.jp/article/COLUMN/20071204/288630/
0836デフォルトの名無しさん
2008/02/17(日) 00:30:34ただ、HaskellがCよりデバッグしにくいのは事実だと思う
gdbに匹敵する使いやすさのデバッガがまだ無いからだが
>>833
>でも、なんか、かたくなに参照透明性を守ろうとして
>余計わかり難くなってる気がするんですよね。
どの辺でそう感じた?
0838799
2008/02/17(日) 00:35:00> printfデバッグの類は普通にできる
そうなんですか?
なんかprintfいれるとバグが再現しないとか多そうですが…。
> どの辺でそう感じた?
IOモナドww
参照透明性を捨てれば
もっとステキな実装がありそうじゃないですか?
0839デフォルトの名無しさん
2008/02/17(日) 00:38:46本末転倒だじょ
0840デフォルトの名無しさん
2008/02/17(日) 00:41:05例え参照透明性を捨ててもIOモナドは使いたい
0842デフォルトの名無しさん
2008/02/17(日) 00:43:33Haskell の1つの目標だったんじゃないのか?
0843デフォルトの名無しさん
2008/02/17(日) 00:50:41副作用を使った入出力よりずっとまともだと思う
それから、遅延評価の言語で素朴に副作用を使うと実行順が制御困難になるけど、
IO動作ならこの問題がない
>>842
だろうな
でも言語のユーザーにとってはそんな目標はどうでも良い
0844デフォルトの名無しさん
2008/02/17(日) 00:51:38それだけだと思うぜ。
0845デフォルトの名無しさん
2008/02/17(日) 01:00:20その議論はおかしい
Haskellの特徴は参照透明性だけじゃない
デフォルトの遅延評価も型クラスもIOモナドも$演算子もOCamlには無い
参照透明性なんてどうでも良いという奴にでも、Haskellを使う理由はいくらでもある
0846デフォルトの名無しさん
2008/02/17(日) 01:09:140848デフォルトの名無しさん
2008/02/17(日) 01:15:010849799
2008/02/17(日) 01:15:23まさに、そう、思うんですよw
そんな言語があれば、
確実にブレイクするのではないでしょうか?
誰か作って!私はもちろん……ムリ!
0850デフォルトの名無しさん
2008/02/17(日) 01:26:25unsafePerformIOってのがある
>>849
単に参照透明性のないHaskellならunsafePerformIOを言語の一部として認めれば良いんだけど、
IOモナドを排除するのは難しいと思う
>>843で書いたけど、普通の言語にあるような副作用による入出力は、遅延評価と相性が悪い
実行順を分かり易く制御するには、結局、IOモナドか、Cleanの一意型か、
それに代わる何か新しいメカニズムが必要になる
0851799
2008/02/17(日) 01:39:54な〜るほど!
ひょっとしてunsafePerformIOを使いまくって
>>814 の言う邪悪なIOライブラリを作れば、
Haskellのままでもいいかもしれませんねw
0852デフォルトの名無しさん
2008/02/17(日) 01:41:59こうしよう、C(ほかの言語でもいい)からHaskellに乗り換えるために十分な
説得力を持つ実務的な例を1つだけあげてくれ。
0853デフォルトの名無しさん
2008/02/17(日) 01:55:300854799
2008/02/17(日) 01:55:42「実務的」というかどうかはしらないけど、
コンパイラ的な処理には向いてるらしい…。
再帰下降構文解析
ttp://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90
HaskellやMLなどの関数型言語での再帰下降構文解析の実装は特に簡単である。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
0855デフォルトの名無しさん
2008/02/17(日) 02:00:39っていうのはウソっていうのはどっかでみたなw
0856デフォルトの名無しさん
2008/02/17(日) 02:06:37実際、言語処理系には向いてる。
構文解析だけじゃなく、コンパイル過程での構文木の操作とかに
代数的データ型とパターンマッチがぴったりハマってかなり綺麗に書ける
(MLも同様。代数的データ型じゃなくてバリアントという名前だけど)。
言語処理系は、基本的にツリーの変形みたいな
I/Oを伴わない数学的な処理が多いから、という理由づけもできるかな。
0858デフォルトの名無しさん
2008/02/17(日) 02:16:57いいえ
0859デフォルトの名無しさん
2008/02/17(日) 02:23:46GHCの仕様じゃないの
0860デフォルトの名無しさん
2008/02/17(日) 02:27:47FFIはHaskell 98への追補
http://www.cse.unsw.edu.au/~chak/haskell/ffi/
unsafePerformIOも入ってる
0861デフォルトの名無しさん
2008/02/17(日) 02:29:450862デフォルトの名無しさん
2008/02/17(日) 08:36:340863デフォルトの名無しさん
2008/02/17(日) 09:30:280864デフォルトの名無しさん
2008/02/17(日) 11:58:51できるだろ
http://www.haskell.org/ghc/docs/latest/html/libraries/Win32/System-Win32-DebugApi.html#v%3Ac_ReadProcessMemory
0865デフォルトの名無しさん
2008/02/17(日) 12:01:270866デフォルトの名無しさん
2008/02/17(日) 18:47:44Simon Thompson (著)
# ペーパーバック: 528ページ
# 出版社: Addison Wesley; 3Rev Ed版 (2008/9/15)
# 言語 英語, 英語, 英語
# ISBN-10: 0201882957
# ISBN-13: 978-0201882957
# 発売日: 2008/9/15
今度こそ発売?
0867デフォルトの名無しさん
2008/02/18(月) 18:08:340868デフォルトの名無しさん
2008/02/18(月) 18:18:320869デフォルトの名無しさん
2008/02/18(月) 20:15:31データ構造とアルゴリズムをまとめるだけなら、それこそ関数型言語の得意分野だし、
手続き型の世界でも、メッセージメタファって何それ、なgeneric programmingが幅を利かせている。
その分なおさら、状態と手続きをまとめるSmalltalk的なオブジェクト指向が
影響力を増しているように思う。
>>654のAlan Kayの言葉は、実行順序への依存性が下がること
(これはメッセージメタファ、イベント駆動から自然に出てくる)と、
参照透明という意味で状態を全く持たないことを(故意に?)混同している。
0870デフォルトの名無しさん
2008/02/19(火) 02:47:18Haskellはかなりいけそうな感触なんだけどなぁ
0871デフォルトの名無しさん
2008/02/19(火) 10:02:24形式的な表現が同じでも、値が同じことの保証がなくなるから。
0872デフォルトの名無しさん
2008/02/19(火) 10:36:55副作用を入れるなら当然それは覚悟の上じゃないのか
0873デフォルトの名無しさん
2008/02/19(火) 12:45:42副作用を入れてもいいのは、値がユニット型の関数だけにしないと破綻するだろ。
0874デフォルトの名無しさん
2008/03/09(日) 07:06:26main = getArgs >>= putStr . flip id "\n" . foldr (.) id . map (showHex . read)
ttp://haskell.g.hatena.ne.jp/nobsun/20060819/ShowS を少し改変
0875デフォルトの名無しさん
2008/03/09(日) 10:02:11暗号に見えていたのが、何の変哲もないプログラムとして認識できるようになったら卒業だな。
0877デフォルトの名無しさん
2008/03/09(日) 23:43:380878デフォルトの名無しさん
2008/03/13(木) 21:20:39おれはもうだめだ
0879デフォルトの名無しさん
2008/03/13(木) 21:26:04なぜ($"\n")と書かないんだろう
0880デフォルトの名無しさん
2008/03/14(金) 13:47:26"123456789"
スタックマシンみたいだ(w
0881デフォルトの名無しさん
2008/03/18(火) 18:48:31\a -> hoge a 4 ()
flip (flip hoge 4) ()
($ ()) . ($ 4) . hoge
0882デフォルトの名無しさん
2008/03/19(水) 16:27:19ああ、そうやってカリー化できるんだ。目から鱗が落ちたよ。
0883デフォルトの名無しさん
2008/04/12(土) 21:48:42http://slashdot.jp/developers/article.pl?sid=08/04/06/2313251
---
Java(16479件)、C++(8080件)、C#(7780件)、JavaScript(6749件)、
Perl(5710件)、PHP(2641件)、Python(1408件)、COBOL(1207件)、
Ruby(769件)、Lisp(33件)といった感じらしい。
とりあえずJavaとC/C++/C#、あとJavaScriptを覚えれば、
当分仕事には困らないようである。COBOLのしぶとさも目立つ。
ちなみにHaskellやOCamlの求人は10以下だったそうだ。
---
0884デフォルトの名無しさん
2008/04/19(土) 00:45:19この板にいるの?
0885デフォルトの名無しさん
2008/04/19(土) 01:39:260886デフォルトの名無しさん
2008/04/19(土) 01:41:220887デフォルトの名無しさん
2008/04/24(木) 00:13:42このスレに限れば、仕事と直で結びつきにくい言語かもしらんけど
でも仕事でプログラムやる傍ら、趣味や素養のためにHaskell弄ってる奴も珍しくはないんじゃなかろうか
0888デフォルトの名無しさん
2008/05/03(土) 18:08:150889デフォルトの名無しさん
2008/05/25(日) 22:21:03皆さんはAranskをご存知でしょうか?
最近ネット社会において急速に発言力を増しつつある
集団です。
本家:http://homepage3.nifty.com/Aransk/
ミラーサイト:http://www.geocities.jp/aransk88/
日本語Blog:http://aransk.cocolog-nifty.com/whypro/
英語もどきBlog:http://d.hatena.ne.jp/Aransk/ここまでがAransk Officialsです。
(上記以外にも2ちゃんねるのプログラム板にAransk専用スレが
立っていますが、これはAranskとは何のつながりもありません。)
上記の2ちゃんねる、yahoo掲示板に精力的に意見を
書き込むと同時に自らのサイトの更新も頻繁に
行っています。
驚いたことに、あらゆる場所で人気が「ありません。」
その人気の無さをこのBlogで究明してみるつもりです。
ご興味ある方は是非ご参加下さい。
0890デフォルトの名無しさん
2008/05/25(日) 22:30:180891デフォルトの名無しさん
2008/05/25(日) 23:10:13\y -> e で、yからeへの関数
0892デフォルトの名無しさん
2008/06/05(木) 18:49:530893デフォルトの名無しさん
2008/07/21(月) 10:56:30Haskellを狂信的に勧めるやつが現れてスレがめちゃくちゃに。
0894デフォルトの名無しさん
2008/07/21(月) 19:56:00信者と信者っぽく振る舞ってネタにしてる奴と2種類いるようだな。
0895デフォルトの名無しさん
2008/09/12(金) 21:26:020896デフォルトの名無しさん
2008/09/12(金) 21:30:22WEBが一番
ここが一番わかりやすいぞ
http://www.sampou.org/cgi-bin/haskell.cgi
0897デフォルトの名無しさん
2008/09/12(金) 23:45:22マジか。本買おうかずっと迷ってたんだ。サンクス。これでやってみるよ。
LL Futureで見たんだけどHaskellって並列プログラミングの強さはどんなもんでしょう?
ttp://www.nicovideo.jp/watch/sm4505381
089836 ◆K0BqlCB3.k
2008/09/13(土) 00:50:59現在開発中で一部は使用可能
http://hackage.haskell.org/trac/ghc/wiki/DataParallel/WorkPlan
0899デフォルトの名無しさん
2008/09/13(土) 02:18:360900デフォルトの名無しさん
2008/09/17(水) 01:21:22本の方がわかりやすいと思うがWebの方を読んで理解できるレベルなら
それでいいと思う。お金かかんないし。
0901デフォルトの名無しさん
2008/12/28(日) 21:41:49その程度に敷居も得られる知識も低い
0902デフォルトの名無しさん
2008/12/29(月) 09:26:47論文書きたいなら書籍より論文読めよ
0903デフォルトの名無しさん
2008/12/29(月) 20:15:130904デフォルトの名無しさん
2008/12/30(火) 16:55:180905デフォルトの名無しさん
2008/12/31(水) 16:52:160906デフォルトの名無しさん
2008/12/31(水) 17:14:30このスレには昔からいただろww( ^ω^)
0907デフォルトの名無しさん
2009/01/13(火) 19:07:140908デフォルトの名無しさん
2009/01/13(火) 20:42:09レス数が900を超えています。1000を超えると表示できなくなるよ。