トップページtech
981コメント300KB

関数型プログラミング言語Haskell Part9

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/05/17(土) 16:41:29
haskell.org
http://www.haskell.org/

日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
http://www.shido.info/hs/

過去ログ
関数型プログラミング言語Haskell
Part1 http://pc.2ch.net/tech/kako/996/996131288.html
Part2 http://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 http://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 http://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 http://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 http://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 http://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 http://pc11.2ch.net/test/read.cgi/tech/1193743693/
・2chの仕様により、行頭の半角スペースは表示されません。
 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
0267デフォルトの名無しさん2008/06/24(火) 07:48:57
>>266 どういうこと?
例えば
f (x1 : x2 : x3 : xs) -> x1 + x3
だったら、引数のリストの最初の要素と3番目の要素について正格ってこと?
0268デフォルトの名無しさん2008/06/24(火) 08:32:09
>>267
そういうつもりで「正格」という言葉を使った
0269初心者修業中2008/06/24(火) 09:53:02
関数結合の(.)って優先順位が高いので、
どうしても括弧が増えて見ぐさい気が…。

こんなのがあったら便利だと思うんですけど、

infixr 1 $.
($.)=(.)

こんな感じ

sigma = tail $. scanl (+) 0

標準ではなさそうなんですが、
やっぱ、問題ありですかね?
0270デフォルトの名無しさん2008/06/24(火) 09:55:22
慣れの問題
0271初心者修業中2008/06/24(火) 10:13:14
ああ、勘違いしてました。
関数の優先順位はどの演算子よりも上ですね。

これで問題ないのか

sigma = tail . scanl (+) 0

>>270
レスありがとうございます。
早く慣れたいです。
まだ、頭で考えないとよくわからない。
(考えてもわからない時ありw)
0272デフォルトの名無しさん2008/06/24(火) 11:35:10
>>266
「厳密には」も何も最初っからそう
0273デフォルトの名無しさん2008/06/24(火) 12:56:24
>>266
> 覚えていないといけない
覚えてなくてもプログラム書くのにはなにも困らない。
等価性とか考えだすと全部正格のほうが楽かもしれんけど。
0274デフォルトの名無しさん2008/06/24(火) 18:49:23
>>273
書くときは良くても読むとき困る
例えば>>260のコードが空リストに対しても正しく動作するかどうか確かめるのに、
いちいちPreludeの仕様を読まないといけない

zipみたいに明確な定義のある関数ならまだいいけど、
例えばhPutStrLn undefined ""の値が
1. ⊥
2. 実行時にエラーになるアクション
3. ()を返すアクション
のどれになるかは仕様では決まっていないはずで、ちょっと厄介
0275デフォルトの名無しさん2008/06/25(水) 15:42:16
>>274
その辺は想像で読めば十分じゃない?

zip xs (tail xs) とあって、
コードを書いたのが信頼できる人なら、
zip は第二引数について非正格なのだろうな、とか。

hPutStr undefined "" も、
hPutStr _ "" = return () と定義されては無いだろうし、
undefined が正しいハンドルじゃないからと
hPutStr が独自にエラーを出すというのも、
先に undefined が評価されるから有り得ないだろう、とか。
hPutStr (error "1") (error "2") にしても error "1" だろう、とか。
0276デフォルトの名無しさん2008/06/25(水) 15:49:33
ム板のやつらはなんでこんなに視野が狭いんだろうといつも思う。
0277デフォルトの名無しさん2008/06/25(水) 17:38:53
3の場合

main「ちょっと undefined に "" 出力してこい」
hPutStrLn「へい」
...数十ns後
hPutStrLn「やってきやした」
main「おまwwww改行どうしたwwwwwwww」

>>276
正直くだらないネタ以外はここではなく他の所に書く。
0278デフォルトの名無しさん2008/06/25(水) 18:27:02
質問です

HaskellでGPGPU関連の話題ってありませんか?
02792742008/06/25(水) 20:23:02
すまん、hPutStrLnじゃなくてhPutStrじゃないと話が合わないな

>>275
>コードを書いたのが信頼できる人なら、
勉強のためにコードを読んでるならいいけど、
レビューとかデバッグとかしてるならそうはいかないだろ

>hPutStr が独自にエラーを出すというのも、
誤解させたかもしれんが、HugsもGHCも2.の振る舞いをする
実行した時点でundefinedが評価されてエラー発生ね
でも、例えば最適化のために
hPutStr h s = seq h $ ...
みたいな実装になってたら1.だし、
hPutStr h s = mapM_ (hPutChar h) s
みたいな定義が考えられる以上3.もあり得なくはない

結局、非正格がデフォルトなせいで関数の仕様に書かなければいけない事項が多いのが問題
それを不用意にうやむやにすると関数の振る舞いが実装に依存してしまう
それほど頻繁に問題になることではないけど、たまに面倒
02802752008/06/25(水) 21:28:51
>>279
> レビューとかデバッグとかしてるならそうはいかないだろ
うん。

> hPutStr h s = mapM_ (hPutChar h) s
> みたいな定義が考えられる以上3.もあり得なくはない
なるほど。

> それほど頻繁に問題になることではないけど、たまに面倒
そういうこったね。
02812752008/06/25(水) 21:32:14
> 誤解させたかもしれんが、HugsもGHCも2.の振る舞いをする
> 実行した時点でundefinedが評価されてエラー発生ね

そういうつもりでしたか。
ちなみにそれだと1.はどういうつもりだったのですか?
0282デフォルトの名無しさん2008/06/25(水) 21:49:44
>>281
hPutStr undefined "" `seq` 0
を評価してエラーが発生すれば1.だよな
実際試したらHugsでもGHCiでもエラーは発生しなかった
02832752008/06/25(水) 22:26:04
なるほど。というか>>279をちゃんと読んでませんでしたごめんなさい。
0284デフォルトの名無しさん2008/06/26(木) 21:37:05
一通りよく取り上げられる教科書は読んだんですが、Arrowなどの
比較的新しい技法についてわかりやすく書かれた文書はどの辺
でしょうか。
0285デフォルトの名無しさん2008/06/26(木) 23:11:25
本家から辿って論文を読むのがいいと思うよ。
0286デフォルトの名無しさん2008/06/26(木) 23:16:36
Arrow アーーー
0287デフォルトの名無しさん2008/06/26(木) 23:28:26
arrowねぇ・・・イマイチだねぇ・・・
プログラミング的にはこれといってメリットないよ。
0288デフォルトの名無しさん2008/06/27(金) 00:23:45
>>284
http://www.haskell.org/haskellwiki/Arrow
0289デフォルトの名無しさん2008/06/28(土) 00:05:34
arrowで量子コンピュータのシミュレーションやってます
めっちゃべんりですっっっっs
0290デフォルトの名無しさん2008/06/28(土) 01:15:42
ユニタリ変換の理解が一つの山かも。
0291デフォルトの名無しさん2008/06/28(土) 01:22:40
ユニタリ変換?高校生でも知ってるよ
0292デフォルトの名無しさん2008/06/28(土) 10:42:43
皆さん、エディタは何使って書いてますか?
0293デフォルトの名無しさん2008/06/28(土) 10:48:09
emacsしか選択肢ないんじゃね?
eclipseは糞だし。
0294デフォルトの名無しさん2008/06/28(土) 11:10:10
vim
0295デフォルトの名無しさん2008/06/28(土) 11:45:12
notepad.exe
0296デフォルトの名無しさん2008/06/28(土) 12:32:37
vimやemacsだと使い勝手のいいプラグインあるんでしょうか。

自分もEclipseはちょっと嫌ですねぇ。
0297デフォルトの名無しさん2008/06/28(土) 12:44:03
http://www.haskell.org/libraries/haskell.vim その他いろいろ

$ hugs -Evim
0298デフォルトの名無しさん2008/06/28(土) 16:06:10
Haskellの構文解析ってどういう風な作りになってるん?
結合性宣言があったりするので、
トークン読んだ時点では構文木を作れないような気がするんだけど。

何かの資料とか、HugsやGHCでの実現方法のソースとかあったら教えてくだしあ
0299デフォルトの名無しさん2008/06/28(土) 16:38:24
>>298
GHCはとりあえず全部左結合として解析(parser/Parse.y)して、
後のrenameのパスで結合性宣言をもとに組み立て直してる(rename/RnExpr.lhs)
0300デフォルトの名無しさん2008/06/28(土) 16:57:55
>>292
俺もvimだわ
なんか文法と相性良さげだし
0301デフォルトの名無しさん2008/06/28(土) 17:16:47
>>299
そういう手があったか。いや、全然関係ないパーサを先日作ってたんだが。
パス(1パスコンパイラとか2パスコンパイラとかのパス)にこだわっていては
非富豪的かねぇ。
0302デフォルトの名無しさん2008/06/28(土) 18:10:34
左結合にするってのは、
とりあえずリンクトリストにしといてから、
あとでパーズしなおすって事。
0303デフォルトの名無しさん2008/06/28(土) 18:39:00
>>292 俺はAgda使ってるよ。結構使いやすい。
0304デフォルトの名無しさん2008/06/28(土) 20:10:12
project eulerに接続できねーぞ!!!
どうなってんだ糞
0305デフォルトの名無しさん2008/06/28(土) 20:19:06
質問です

グラフの研究で路線データ(や道路のデータなど)が使いたいのですが、
そういうデータを手に入れるにはどうすればいいですか?
0306デフォルトの名無しさん2008/06/28(土) 21:47:48
>>305
質問です

Haskellと関係ありますか?
03072982008/06/28(土) 22:27:19
>>299,302
thx、参考になった。
細かく追えてないけど、かなりがんばらないとparseできないってことか。
0308デフォルトの名無しさん2008/06/29(日) 08:23:28
とりあえず左結合って要するにS式だよね。
0309デフォルトの名無しさん2008/07/01(火) 18:44:49
Real World Haskell
http://www.amazon.co.jp/Real-World-Haskell-Bryan-OSullivan/dp/0596514980/

> This easy-to-use, fast-moving tutorial introduces you to functional
> programming with Haskell. Learn how to use Haskell in a variety of
> practical ways, whether it's for short, script-like programs or large
> and demanding applications.
0310デフォルトの名無しさん2008/07/02(水) 02:44:41
中身読めるよ
http://book.realworldhaskell.org/beta/

表紙が決まったんだね。ヘラクレスオオカブト?
0311デフォルトの名無しさん2008/07/02(水) 03:40:51
後の兜本である。
0312デフォルトの名無しさん2008/07/02(水) 22:40:44
オライリーからHaskellの本が出るなんてありえない。
そう思っていた時期が僕にもありました
0313デフォルトの名無しさん2008/07/02(水) 23:40:42
2008/09
ちょおまw

0314デフォルトの名無しさん2008/07/04(金) 04:55:50
>>310
全30章中残りは3章。
20. The foreign function interface
27. Profiling and tuning for performance
30. A concurrent RESTful web application
書きにくそうなのが残った感じw
0315デフォルトの名無しさん2008/07/09(水) 08:14:01
初心者用のスレで関数型の話をすると罵られる。なぜだろう。
0316デフォルトの名無しさん2008/07/09(水) 12:30:55
初心者には関数型が高尚すぎて理解できないからです。
0317デフォルトの名無しさん2008/07/09(水) 22:36:35
しつもんです
らむだけいさんってなんですか?
0318デフォルトの名無しさん2008/07/09(水) 23:38:52
世界遺産の一種です

0319デフォルトの名無しさん2008/07/09(水) 23:44:40
ttp://wwwfun.kurims.kyoto-u.ac.jp/MtLambda.html
0320デフォルトの名無しさん2008/07/10(木) 05:32:31
全部ひらがなだとぱっと見、人名かなんかかと思った。羅武田圭さんとか。
0321デフォルトの名無しさん2008/07/10(木) 16:58:13
俺がムラタだ
032236 ◆K0BqlCB3.k 2008/07/11(金) 01:58:31
http://hackage.haskell.org/trac/ghc/wiki/DataParallel/WorkPlan
とっとと仕事しろやボケ
0323デフォルトの名無しさん2008/07/11(金) 09:38:42
まあ遅延評価だから
0324デフォルトの名無しさん2008/07/11(金) 10:04:21
等無駄計算
0325デフォルトの名無しさん2008/07/11(金) 16:03:12
>>322
なにエラソーに言ってんだよ。しょーもない評論家なくせして。
0326デフォルトの名無しさん2008/07/19(土) 00:59:56
名村啓?
0327デフォルトの名無しさん2008/07/20(日) 23:31:18
do記法で

'aとか''aとか出てきますが
どのような意味なのでしょうか
0328デフォルトの名無しさん2008/07/21(月) 01:16:27
>>327
具体的なコード書いてみて
0329デフォルトの名無しさん2008/07/21(月) 15:09:50
>>327
a'とかa''じゃなくて?
ちなみにそれならただの変数名だよ。
0330デフォルトの名無しさん2008/07/21(月) 15:13:03
>>329
見直したらそうでした
許してくださいw
ごめんなさい
0331デフォルトの名無しさん2008/07/21(月) 23:32:45
\_ -> k

この\_ってC++のtemplate <t>みたいなもんですか?
0332デフォルトの名無しさん2008/07/21(月) 23:38:07
全然違います
0333デフォルトの名無しさん2008/07/21(月) 23:43:54
>>332
じゃあ何なのでしょうか?
0334デフォルトの名無しさん2008/07/21(月) 23:55:35
ttp://www.codelogy.org/archives/2008/04/haskell_4.html
ていうかなんか一冊入門書買うことをおすすめする
0335デフォルトの名無しさん2008/07/22(火) 01:00:32
なんか夏まっさかりって感じ?
0336デフォルトの名無しさん2008/07/22(火) 01:40:52
質問の仕方スレもいるな
Haskellでぐぐっていくつか読めばわかるぐらいのことで
これって型でしょ
違います
じゃあなんなんだよ
つ やさしいHaskell入門
0337デフォルトの名無しさん2008/07/26(土) 19:44:30
おい、おまえらの仲間が「初心者のための〜」スレで暴れてるから早く回収してくれ
0338デフォルトの名無しさん2008/07/26(土) 20:22:33
狂犬に噛まれて狂犬が増えるって
怖くね?
0339デフォルトの名無しさん2008/07/27(日) 01:34:24
あれは仲間じゃない
0340デフォルトの名無しさん2008/07/27(日) 02:01:40
そもそもスレタイからして興味ない話だし。
向こうで完結して。
034136 ◆K0BqlCB3.k 2008/07/27(日) 02:23:52
さて、この夏、何かおもしろいことでもしようかな。
0342デフォルトの名無しさん2008/07/27(日) 10:47:30
お前らの中にアホがいます
他のスレを荒らすならここを荒らしますよ?
0343デフォルトの名無しさん2008/07/27(日) 12:10:53
>>342
ほー、やってみてください。本当にできるのですか?
0344デフォルトの名無しさん2008/07/27(日) 13:11:28
夏厨誕生物語

A 「この夏、何かおもしろいことでもしようかな。」
B 「ならスレ荒らししてみれば?」
A 「簡単にできるのですか?」
B 「こうやれば邯鄲」
A 「ネ申キター!d!マジ面白いね。他スレ荒らしてクルーwktk」
0345デフォルトの名無しさん2008/08/06(水) 05:48:39
注目ワード“高階プログラミング”って何だ?
ttp://ascii.jp/elem/000/000/157/157495/
0346デフォルトの名無しさん2008/08/06(水) 06:00:24
>>345
面白かった。サンクス。
0347デフォルトの名無しさん2008/08/06(水) 19:32:59
仕事でHaskellできるなんて羨ましいなぁ。
0348デフォルトの名無しさん2008/08/06(水) 20:30:02
>>345
nobsunだね。
0349デフォルトの名無しさん2008/08/06(水) 20:47:23
ハイカラなシャツ着てる
0350デフォルトの名無しさん2008/08/06(水) 22:06:03
この会社ってホームページ見た感じ普通のSI会社に見えるけど、
山下さんなんかがいるってことは特殊な会社?

Haskellの開発コンサルということだけど、一般企業の業務システム
なんかを対象にしてるのかな。金融系とか合ってそうだけど、
普通の土方システムには豚に真珠かな。
0351デフォルトの名無しさん2008/08/06(水) 22:30:36
>>350
看板役みたいなものだよ。
よくあること。
SRAでも青木淳みたいなのを雇っているけど、青木は普通の仕事はしていないね。
金にならないことを自由にやっているって感じ。
ちなみに、青木の部下はかわいい女の子限定。
0352デフォルトの名無しさん2008/08/07(木) 05:56:03
まあ、天才ならなんでも許されるってことだ。
0353デフォルトの名無しさん2008/08/07(木) 07:30:34
>>351
青木はSRAやめたよ
0354デフォルトの名無しさん2008/08/07(木) 08:39:56
>>345 nobsunのコードは以前からスゲーと思ってたけど、こんな会社のこんな人なんだ。知らなかった。
会社の事業だけ見ると、Haskell関係なさそうだね。Higher Order Programmingってなんだ?造語か?
もっと記事をよく見てみる。
0355デフォルトの名無しさん2008/08/07(木) 08:55:02
>>354
ちょ、おまwww
0356デフォルトの名無しさん2008/08/07(木) 09:12:13
Higher Order Programming: プログラミングを丸投げするためのプログラムを書くこと
0357デフォルトの名無しさん2008/08/07(木) 09:45:57
継続ベースのWebフレームワークってHaskellにもありますでしょうか。
0358デフォルトの名無しさん2008/08/07(木) 12:53:37
>>350
あそこって、gaucheかんけいなひとがおおそうなんだけど。
0359デフォルトの名無しさん2008/08/07(木) 12:58:00
>>358
そりゃそうだ。普通のJaverやC++マが金を取ってこなきゃ、
みんなgaucheとかに走ったら誰が食い扶持を稼ぐんだって。
0360デフォルトの名無しさん2008/08/07(木) 13:19:40
二等兵には二等兵の仕事があるわな。
0361デフォルトの名無しさん2008/08/07(木) 13:46:18
むしろ、パンダと飼育員。
0362デフォルトの名無しさん2008/08/07(木) 13:54:11
俺はまだ士官候補訓練兵だ
0363デフォルトの名無しさん2008/08/07(木) 16:12:52
あの写真を見て
小野伸二を思い出したんだけど。nobsunはやっぱり天才なんですかね。
0364デフォルトの名無しさん2008/08/07(木) 19:03:09
俺は山田ルイ53世を思い出した。すまん>nobsun
ルネッサ〜ンス!
0365デフォルトの名無しさん2008/08/07(木) 19:05:14
あの芸人、この前番組内であからさまにいじめられてたぞ。
最近テレビの前で普通にいじめる先輩芸人が多くないか?
0366デフォルトの名無しさん2008/08/07(木) 19:55:17
そんなことより「Real World Haskell」の発売が10月に延びてる・・・
■ このスレッドは過去ログ倉庫に格納されています