関数型プログラミング言語Haskell Part12
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/04/29(木) 19:15:28ttp://www.haskell.org/
日本語サイト
ttp://www.sampou.org/cgi-bin/haskell.cgi
ttp://www.shido.info/hs/
過去ログ
関数型プログラミング言語Haskell
Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html
Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
・2chの仕様により、行頭の半角スペースは表示されません。
コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
0159デフォルトの名無しさん
2010/05/19(水) 00:50:37その目標とその候補であれば「関数プログラミングの楽しみ」を薦める。
>>158
本には人のソースが載ってるし、
なぜそのソースになったのかの解説もついてるんだがな。
練習問題も載ってるし。
何か問題があるのか?
さすがに完成されたソースが丸ごと一式載っていることはまずないが、
「関数型言語らしいプログラミング」を学ぶのにソース丸ごと一式は要らないだろ。
そもそも、何が関数型言語らしさを作っているのかを知らないまま、
実際にコーディングしたり人のソース読んでも、分からないままだと思う。
0160デフォルトの名無しさん
2010/05/19(水) 01:18:02そういうレスがあるとは思っていた。尼のギフトカードの残高で丁度中古の
「ふつうの〜」が1冊買えたんだよね。だから一層のこと揃えてみただけ。
ただ最初の2冊で分かりにくかったことが、サラっと「ふつうの〜」に説明して
あったりして、最初に読んどけば良かったなと。
0161デフォルトの名無しさん
2010/05/19(水) 01:19:12人のソースはともかく、自分でコーディングしてみないと結局伸びない
0162デフォルトの名無しさん
2010/05/19(水) 07:24:30> ただ最初の2冊で分かりにくかったことが、サラっと「ふつうの〜」に説明して
> あったりして、最初に読んどけば良かったなと。
そういう読み方のタイプも普通にあるし、推奨している読書テクニック本もある。
難解な本を読んで、ある部分が難しかったら、別の一段レベルが低い本を読んで、
それから先の本に再チャレンジする。
0163デフォルトの名無しさん
2010/05/19(水) 07:49:47コードをただ書くだけで伸びるってものでもないけどな
インプット(読む)とアウトプット(書く)は両方あった方がいい
0164デフォルトの名無しさん
2010/05/19(水) 08:17:380165デフォルトの名無しさん
2010/05/19(水) 08:34:400166デフォルトの名無しさん
2010/05/19(水) 08:45:55それが本の役割だと思う。
0167デフォルトの名無しさん
2010/05/19(水) 14:28:500168デフォルトの名無しさん
2010/05/19(水) 15:57:330169デフォルトの名無しさん
2010/05/19(水) 16:00:58おいおいって感じw
0170デフォルトの名無しさん
2010/05/19(水) 16:29:15nobsunって誰?と思ってググってみたらツイッターやってて
しかもHaskell公式のマークを上下ミラーリングして(λ→y)
自分のマークにしちゃっててワロタ
0171デフォルトの名無しさん
2010/05/19(水) 16:33:31笑っちゃうぜ
0172デフォルトの名無しさん
2010/05/19(水) 16:40:550173デフォルトの名無しさん
2010/05/19(水) 16:44:21まぁ、プログラミングの分野は論文がすべてじゃないからね。
ソフトウェア論文がいかに評価されないか、研究者ならみんな知ってるはず。
0174デフォルトの名無しさん
2010/05/19(水) 16:49:50日本でのエバンジェリストとしての第一人者だね。
0175デフォルトの名無しさん
2010/05/19(水) 16:53:34開発手法を編み出したとか
斬新なソフトを書いたとか
ツールを開発したとか
Haskellコンパイラのすごい最適化エンジンを実装したとか、
なにか無いの?
0176デフォルトの名無しさん
2010/05/19(水) 16:54:13ふつうのHaskellプログラミングの監修もしていますね。
どう見ても日本のHaskellプログラミングの第一人者です。
笑っちゃった人は自分の無知を自覚すべきだと思います。
0177デフォルトの名無しさん
2010/05/19(水) 16:55:27俺の答えは、日本にはマトモなHaskellerはいない、って事だよ。
0178デフォルトの名無しさん
2010/05/19(水) 17:34:060179デフォルトの名無しさん
2010/05/19(水) 17:47:32白石さんはHaskellに人生食われちゃってる人
0180デフォルトの名無しさん
2010/05/19(水) 20:32:16評価が早計だな
もっと評価を遅延すべき
0181デフォルトの名無しさん
2010/05/19(水) 20:42:40つまり、宇宙の終りの時に初めて評価されるんですね
0182デフォルトの名無しさん
2010/05/19(水) 20:42:45その中の第一人者ってことでいいだろ
所詮相対評価だ
0183デフォルトの名無しさん
2010/05/19(水) 20:43:15新しいことをしなくても、技のレベルが高ければ評価は高くなると思う。
Haskellの技とは? とかnobsunはレベルが高いのか? はおいといて。
0184デフォルトの名無しさん
2010/05/19(水) 20:56:470185デフォルトの名無しさん
2010/05/19(水) 20:58:10Lispの方言を別の言語として数えればそうかもね
0186デフォルトの名無しさん
2010/05/19(水) 21:05:09んなわけあるかいw
と言ってしまえばその記事と同じなので
ちゃんと調査が必要ですね。
0187デフォルトの名無しさん
2010/05/19(水) 21:05:460188デフォルトの名無しさん
2010/05/19(水) 21:52:17純粋関数型言語では一番多いんじゃね?
0189デフォルトの名無しさん
2010/05/19(水) 21:59:200190デフォルトの名無しさん
2010/05/19(水) 22:14:500191デフォルトの名無しさん
2010/05/19(水) 22:35:30もう1つって何?
Concurrent Clean?
Lazy K?
0192デフォルトの名無しさん
2010/05/19(水) 22:59:01λ
0193デフォルトの名無しさん
2010/05/19(水) 23:03:52関数型言語を始めるなら純粋な言語がいいという理由でHaskellを勉強する人が一番多い
みたいなことがSoftwareDesignに書いてあった気がする
0194デフォルトの名無しさん
2010/05/19(水) 23:22:130195デフォルトの名無しさん
2010/05/19(水) 23:45:10前方参照できる
let/let recの区別が不要
deriving (Eq, Show)がある
インタプリタが使いやすい
方言がない
構文がCに似ている
--makeで万事よろしくやってくれる
0196デフォルトの名無しさん
2010/05/19(水) 23:46:25JavaのTomcatみたいに、サーバ部分とは独立して作ったアプリケーションを追加していくようなサーバコンテナってないでしょうか
それとも、関数型言語だから、Mighttpdみたいなサーバでも、TomcatみたいなWEBサーバコンテナになるのでしょうか
0197デフォルトの名無しさん
2010/05/20(木) 06:31:10Tomcatがどんなものか知らないが、お遊びのウェブアプリケーションを書くならhackがおすすめ。
リクエストをレスポンスに変換する関数を書くだけでウェブアプリケーションを実装できる。
バックエンドのサーバはFastCGIやhappstackなどアダプタさえあれば何でもいい。
本格的なウェブサービスを構築するにはそもそもHaskellを使うべきかどうかが問題。
0198デフォルトの名無しさん
2010/05/21(金) 10:38:060199デフォルトの名無しさん
2010/05/21(金) 21:12:530200デフォルトの名無しさん
2010/05/21(金) 21:20:07実用にならないというか、production-qualityでないプログラム。
具体的には、Haskellに多い実験的なライブラリや、
品質上の理由でミッションクリティカルな用途に耐えないインターナルなソフトウェアなどが含まれる。
0201デフォルトの名無しさん
2010/05/21(金) 21:35:371ステップ = WHNFの1-stepリダクションで。
0202デフォルトの名無しさん
2010/05/21(金) 21:36:47ソフトウェアアーキテクチャの文脈で定義される品質属性すべて。
製品に使われた実績の少ないプラットフォームは一般にエコシステムが弱いので、
製品に使うには不適当。
0203デフォルトの名無しさん
2010/05/21(金) 21:40:47LLVMというのは本格的なシステムの運用に使えるようなものなのか?
0204デフォルトの名無しさん
2010/05/21(金) 21:44:34一応 ghci でブレークポイント張ったりステップ実行できるけど、
ステップ単位は望んでるものではないな。
0205デフォルトの名無しさん
2010/05/21(金) 22:10:12と思ったけど、改めて使ってみたら結構ステップ単位が細かい。
もしかしたら望んでるものに近いかも知れんぞ。
「1ステップ = WHNFの1-stepリダクション」が具体的に
どういうステップ単位かよく分かんないけど。
0206デフォルトの名無しさん
2010/05/22(土) 08:04:200207デフォルトの名無しさん
2010/05/22(土) 13:46:27文脈から察するにデバッガのことか。
自分ではちゃんと動作するはずだと思い込んでて、
紙と鉛筆で簡約のステップを書いて確かめた(証明した)はずなのに、
何故か上手く動かない(実際には証明されていない)時なんかに役立つ。
IO 以外のモナドで do 表記をしている時とか、例外が発生する時とか。
そもそも紙と鉛筆による簡約が面倒な時。
特にGUIを使ってる時は面倒だ。
外部入力の値を確かめる時。
print や GUI で確認表示するコードをいちいち挿入して、後で取り除くよりも、
デバッガで確かめた方が早くて安全な場合もある。
ただ、ghci のデバッガは無いよりマシ程度のものなので、
願わくばもっと使いやすい本格的な Haskell デバッガが欲しいな。
できればビジュアルなもので。
0208デフォルトの名無しさん
2010/05/22(土) 15:59:19なるほど 解説サンクス
0209デフォルトの名無しさん
2010/05/22(土) 16:00:310210デフォルトの名無しさん
2010/05/22(土) 16:02:30手のほうが楽でいいよ。
0211デフォルトの名無しさん
2010/05/22(土) 16:08:000212デフォルトの名無しさん
2010/05/22(土) 16:12:530213デフォルトの名無しさん
2010/05/22(土) 16:13:36見た目だけ知的w
0214デフォルトの名無しさん
2010/05/22(土) 16:33:04近所回って回収してくりゃあっという間に段ボール10箱分ぐらい集まるし
0215デフォルトの名無しさん
2010/05/22(土) 16:44:25secion系。
私はあまりたくさんのノートを書かず、そしてグラフィックの割合が高いからだ。
0216デフォルトの名無しさん
2010/05/22(土) 17:16:53Haskellプログラミングに使うノートの話をしているんだが。
0217デフォルトの名無しさん
2010/05/22(土) 18:04:360218デフォルトの名無しさん
2010/05/22(土) 18:56:24つ http://www.amazon.co.jp/dp/B001NDOO8C
0219デフォルトの名無しさん
2010/05/23(日) 02:58:48http://news.ycombinator.com/item?id=1369852
0220デフォルトの名無しさん
2010/05/23(日) 07:03:16> A fast HTTP server library with an optional high-concurrency backend using the libev event loop library.
これは期待できそうだな
0221デフォルトの名無しさん
2010/05/29(土) 03:28:11Intel さんって色んな事やってるのね…
0222デフォルトの名無しさん
2010/05/29(土) 08:44:51Haskellはじめての人が理解しにくいところってなんだろう?
自分の場合、ラムダ計算やPCFを先にやってたから入りやすかったが、
この辺を知らない人がいきなりHaskellに接したときにつまづくところ
があったりするのかな?
0223デフォルトの名無しさん
2010/05/29(土) 09:30:14どんな人を対象に話すのかで変わると思うよ。
相手が計算機科学の人なのか? プログラミング言語をひとつくらい習得している
人なのか?まったくの素人なのか?
とかね。
0224デフォルトの名無しさん
2010/05/29(土) 09:33:28やっぱモナドじゃね
0225デフォルトの名無しさん
2010/05/29(土) 09:51:06どうしても多変数脳から脱却出来ん。
0226デフォルトの名無しさん
2010/05/29(土) 10:15:51C, Javaについて一通り習った人が相手です。
>>224
モナドですか…さすがに初回からはきついかも。
>>225
なるほど。
その辺、可換図式でも使って説明しますかね。
0227デフォルトの名無しさん
2010/05/29(土) 11:44:57これらがいくつか組み合わさったコードを見ると途端に混乱するということがあった
それぞれ単独でみれば難しくないし、再帰は既に知ってるだろうし、他も教えられればすぐに理解できるだろうけど、
自在に読み書きできるようになるには時間が必要で、最初のうちはfoldrの定義なんかすごく難しく見えると思う
0228デフォルトの名無しさん
2010/05/29(土) 11:59:01c,java系の人なら関数型特有にみえることはわかりにくいかも。
30分で話すとか10分で話すとかなら簡単なことしか話せないだろうしね。
でも高階関数あたりは欲しいかもね。
0229デフォルトの名無しさん
2010/05/29(土) 12:00:140230デフォルトの名無しさん
2010/05/29(土) 12:02:57IO も、こう書くものだ、で済ませるか、対話環境だけ使うことにするとか。
個人的には、いちばん理解しにくいのは関数適用だけでプログラムを書くということだと思う。
ループしながら変数に代入、みたいなのから
map して filter して fold になかなか切り替えられない。
0231デフォルトの名無しさん
2010/05/29(土) 12:06:53入力ができないのがプログラムの題材的にちょっと辛いけど。
0232デフォルトの名無しさん
2010/05/29(土) 12:07:11一番高い壁はクリアじゃね?
0233デフォルトの名無しさん
2010/05/29(土) 12:15:44> ループしながら変数に代入、みたいなのから
> map して filter して fold になかなか切り替えられない。
リストの長さを出すのに「各要素を1に変えて合計」ってのは受けるぞ
0234デフォルトの名無しさん
2010/05/29(土) 12:25:52その前にsumをfoldで定義することが関数型特有じゃないか?
0235デフォルトの名無しさん
2010/05/29(土) 12:36:29実例を見せると納得してくれる
0236デフォルトの名無しさん
2010/05/29(土) 13:12:18一番惹かれそうなものは何かというアプローチはどうだ?
そこに、一番分かりにくいものを絡めていくとか。
0237デフォルトの名無しさん
2010/05/29(土) 13:50:070238デフォルトの名無しさん
2010/05/29(土) 14:35:07quick sortちゃう?
0239デフォルトの名無しさん
2010/05/29(土) 14:53:310240デフォルトの名無しさん
2010/05/29(土) 15:19:22とりあえずトランザクション制御とか
0241デフォルトの名無しさん
2010/05/29(土) 15:27:540242デフォルトの名無しさん
2010/05/29(土) 15:43:400243デフォルトの名無しさん
2010/05/29(土) 16:01:14フォンノイマンの死に様
0244デフォルトの名無しさん
2010/05/29(土) 16:04:12人物を語るのが一番良い印象を与えやすいんだよね。
関数がどうのこうのと技術的な話なんて興味を持つ動機には成り得ないよ。
0245デフォルトの名無しさん
2010/05/29(土) 16:16:09人物について語るのって専門の話を回避するテクニックであって、
専門的な事を話す目的があったらそれじゃダメじゃん。
0246デフォルトの名無しさん
2010/05/29(土) 16:16:28何に対しての「逆」を想定してるんだ?
>>222,226 の逆であれば、Haskell を一通り習った人が
CやJavaの素人に入門的な話をするという事だと思うが、
それなら Hello, World も、人物の話も、
それほど適切ではないような気がするが。
0247デフォルトの名無しさん
2010/05/29(土) 17:43:23データ構造にしても、可変の方がはるかに蓄積が多いから、まず不変を学習してから可変に移るというのは異常。
0248デフォルトの名無しさん
2010/05/29(土) 20:46:07あれから、つまるところ関数型言語の本質はなんだろう、などと考え始めて
1日つぶれてしまいました。
余り大上段に構えず、こんな便利なことができる、程度の紹介にとどめておいた方がいいですね。
とりあえず高階関数だけはおさえておこうと思います。
0249デフォルトの名無しさん
2010/05/29(土) 20:48:030250デフォルトの名無しさん
2010/05/29(土) 20:49:15あれはあんまり参考にならんぞw
考え方が偏りすぎている
0251デフォルトの名無しさん
2010/05/29(土) 21:15:120252デフォルトの名無しさん
2010/05/29(土) 21:21:09だってその人自身が社会を構成する人間の一人なんだから。
0253デフォルトの名無しさん
2010/05/29(土) 21:37:21高階関数と再帰の具体例を挙げて関心を持ってもらうストーリーがよさそうですね。
あとは「変」数じゃなくって…って話かな。
C言語の人は関数ポインタを使うのとどう違うの?とか聞いてくるかもしれませんね。
え?そんなビギナーの聴衆はいないって?w
0254デフォルトの名無しさん
2010/05/29(土) 21:40:35関数型言語の本質はラムダ計算にある。
0255デフォルトの名無しさん
2010/05/29(土) 21:42:04遅延評価なんだから無限リストも。
0256デフォルトの名無しさん
2010/05/29(土) 22:02:370257デフォルトの名無しさん
2010/05/29(土) 22:03:53俺は A Gentle Introduction to Haskell の fibs の例はなかなか理解できなかった。
>>247
既存のアルゴリズム本を参考にして
リストに (!!) でアクセスしまくるコードを書いて来た人を思い出した
0258デフォルトの名無しさん
2010/05/29(土) 22:39:43server と client のプログラムを理解するのに時間がかかったな。
紙に鉛筆で簡約ステップを書き下して正しいと頭では分かっていても、
初めは問題なく動くのがなんか不思議な感じだった。
ああいうのをスラスラと例示できるようになりたいな。
■ このスレッドは過去ログ倉庫に格納されています