1 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 20:28:13 ] haskell.org www.haskell.org/ 日本語サイト www.sampou.org/cgi-bin/haskell.cgi www.shido.info/hs/ 過去ログ 関数型プログラミング言語Haskell Part1 pc.2ch.net/tech/kako/996/996131288.html Part2 pc2.2ch.net/test/read.cgi/tech/1013846140/ Part3 pc8.2ch.net/test/read.cgi/tech/1076418993/ Part4 pc8.2ch.net/test/read.cgi/tech/1140717775/ Part5 pc8.2ch.net/test/read.cgi/tech/1149263630/ Part6 pc11.2ch.net/test/read.cgi/tech/1162902266/ Part7 pc11.2ch.net/test/read.cgi/tech/1174211797/ ・2chの仕様により、行頭の半角スペースは表示されません。 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
610 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 18:58:13 ] ghcに-prof -auto-allを付けると最適化が弱まるのはいやがらせか? フルに最適化の掛かったコードのプロファイルを取るにはどうすればいいんだ
611 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:14:50 ] >>610 最適化ありとなしなら違うだろうけどそれぐらいなら大差つきそうな感じもしないし だいたいでいいんじゃない?
612 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 19:55:01 ] >>611 いや、一番内側のループにGHC.IOBase.>>の呼び出しやらunboxing/reboxingやらが残るんだ もともと最適化で余計なものが全部消えることに期待しているソースなので、影響が大きい 実際、プロファイル版だと通常版の7倍くらい時間が掛かる もちろんプロファイルのオーバーヘッドもあるだろうけど、別のソースだと3倍くらいで済むので、 最適化がうまく効かないことの要因が大きいと思う
613 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 13:44:15 ] wxHaskell 0.10.3 rc1が出てた。
614 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:47:24 ] wxHaskellをスタティックリンクする方法ありませんか?
615 名前:デフォルトの名無しさん [2008/03/18(火) 09:56:50 ] Gtk2Hsと比べてどうなの?
616 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 21:37:58 ] ghc test.hs -o test とやった時に生成される test.hi test.o test.manifest この3つのファイルを生成させなくする方法ってないですか?
617 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 21:52:22 ] >>616 manifestファイルの生成は-fno-gen-manifestで抑止できる ただし多少の副作用がある。詳しくはマニュアル参照 oとhiの生成を止めるのは多分無理。これなしじゃ分割コンパイルできないし ファイルが残るのが嫌なら、ghcを実行した後にoとhiを削除するスクリプトでも組めばいい
618 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 22:10:49 ] >>617 ありがとうございます スクリプト書いて我慢することにします。
619 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 20:13:49 ] Introduction to Functional Programming Using Haskell ¥ 11,554 (税込) ペーパーバックでこれって…。何でこんな高いの?
620 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 21:11:09 ] Bird大先生の書いた素晴らしい本なのでその価値はあります。 文章はもちろんコードが素晴らしいです。
621 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 21:19:32 ] >>619 需要と供給の関係じゃない?
622 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 21:33:24 ] >>621 Craftとかと比べるとあんまり売れ筋じゃないってこと?
623 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 21:47:52 ] >>619-620 「関数プログラミング(using Miranda)」はもっと安いYO!i
624 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 22:32:20 ] 正直コードのぱっと見はSASL系のMirandaの方が好きだった。比Haskell
625 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 22:54:32 ] >>619 円高なんだから.comの書店から輸入すれば安いYO!
626 名前:デフォルトの名無しさん [2008/03/20(木) 13:46:58 ] >>624 どの辺が違うの?
627 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 13:48:34 ] >>624 Mirandaスレ逝けYO!
628 名前:619 mailto:sage [2008/03/20(木) 13:57:36 ] っていうか、もう買っちゃったんだけどw ついさっき届いたんだが・・・チョっw、Craftとかよりも紙が安っぽいwww これ、11,554円か・・・。頑張って自分のモノにしないとなw
629 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 14:32:26 ] 1966年にP.J.LandinがISWIMという言語を作ったのがその起源で、SASL, Mirandaという後継言語を経て、HaskellとCleanが生まれました。 これらは、全て「遅延評価」を評価戦略におくプログラミング言語であり、「純粋関数型言語」と呼ばれるグループです。 SASL系のMiranda???イミフ。
630 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 19:31:56 ] 1954年にJ.BackusがFORTRANという言語を作ったのがその起源で, Algol, Cという後継言語を経て、C++とJavaが生まれました。 これらは、全て「副作用による状態の更新」を実行の基礎とするプログラミング言語であり、「手続き型言語」と呼ばれるグループです。 Algol系のC???イミフ。
631 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 19:39:51 ] wxHaskell 0.10.3 が出たみたい。 sourceforge.net/project/showfiles.php?group_id=73133
632 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:22:00 ] 遅延評価よりもしっくりくる言葉はないものだろうか 直訳で不精評価とか?
633 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:37:01 ] >>632
634 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:45:23 ] SASL系のMirandaって何?Haskellは何系なの?クワシク。
635 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 00:00:20 ] HaskellはMiranda系です
636 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 00:20:12 ] >>630 なにが意味不なのかわかんね
637 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 00:53:22 ] 英語が難しくてよく理解できないのでつがw
638 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 10:58:06 ] >>629 なにが意味不なのかわかんね
639 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 11:43:24 ] Point-free styleで \a b -> a*b + a/b を書くにはどうすればいいですか? 一般に,同一の引数を複数回使うような関数はどう定義すればいいですか? さらに例えば2引数a, bを取って,それらを複数回使い, その場所が構文木の深さで並べたとき交互に入り混じるような関数はどう定義すればいいですか? \a b -> a + exp(b + exp a) みたいな. * idとかを使って形式的に同じ深さにする(例えば snd(id b, id a) + exp(id b + exp a) とする) * 2変数関数に同じ引数を与えるようなapplyをあらかじめ定義しておく (そう言えばSコンビネータは S f g x => f x (g x) でxが2回出てくるなぁ...) が鍵かなーと思ってますが,一般にはどうすればいいのか.
640 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:18:34 ] Control.MonadとControl.Monad.Instancesをインポートするとこの二つが使える ap :: (a -> b -> c) -> (a -> b) -> a -> c liftM2 (.) :: (a -> b -> c) -> (a -> d -> b) -> a -> d -> c どっちも便利
641 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:51:22 ] s = \ x y z -> x z (y z) k = \ x y -> x i = \ x -> x -- f = \ a b -> a * b + a / b f = ((s ((s (k s)) ((s ((s (k s)) ((s (k k)) (k (+))))) ((s ((s (k s)) ((s ((s (k s)) ((s (k k)) (k (*))))) ((s (k k)) i)))) (k i))))) ((s ((s (k s)) ((s ((s (k s)) ((s (k k)) (k (/))))) ((s (k k)) i)))) (k i)))
642 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:37:06 ] 返り値がユニットって他の言語で言うvoidの事ですか?
643 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:43:08 ] 他の言語ってどの言語だよw
644 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:46:42 ] 例えばcやJavaです
645 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:59:03 ] >>634 > SASL系のMirandaって何? Turner大先生の作った言語がSASL→KRC→Miranda en.wikipedia.org/wiki/Miranda_%28programming_language%29 Mirandaは売り物じゃなければもっと普及したと思う。
646 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 19:45:21 ] >>642 全く違います。 Unitは値ですがvoidは値ではありません。
647 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:22:47 ] 全く違いますか・・・ 勉強しなおしますい
648 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:26:41 ] void 式は存在するし、C++ だと return 文にも渡せるが、 void 式を入れる変数が存在しない点が Unit とは大きく違う点か。
649 名前:デフォルトの名無しさん [2008/03/23(日) 21:46:56 ] TAPLにはunitとCやJavaのvoidの使われ方は近いと書いてあるね。
650 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:57:00 ] 使われ方は近いっていうのと概念が近いってのを混同せぬよう。
651 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:36:57 ] voidは引数として渡せないしな。
652 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:51:43 ] データ構造にも入れられない
653 名前:639 mailto:sage [2008/03/24(月) 00:09:11 ] >>640 Control.Monad.Instances って関係あるんですか? つーか Control.Monad の ap や liftMn は (Monad m) => ... m a -> ... な感じでモナド専用なのでは? >>641 トランスレータ乙w Wikipediaに載ってる変換アルゴリズムには > In general, the T[ ] construction may expand a lambda term of length n to a combinatorial term of length Θ(3n). とありますが. まぁSKIがあれば不可能な訳ではない,と... R. Bird先生とかの論文で習うしかないのかなー
654 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 00:11:01 ] 日本語でおk
655 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 00:19:18 ] instance Monad ((->) r) -- Defined in Control.Monad.Instances
656 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 01:13:02 ] lambdabotのplというプラグインが自動でポイントフリー変換をしてくれる \a b -> a*b + a/b を入れたら ap (ap . ((+) .) . (*)) (/) が返ってきた \a b -> a + f (b + g a) だと、 ap ((.) . (+)) ((f .) . (+) . g)
657 名前:初心者修業中 mailto:sage [2008/03/24(月) 04:17:08 ] あの、結局、ポイントフリーは 「クイズとしては面白いけど無理に使う必要はない」 という事ですよね?
658 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 07:52:47 ] 当然だ 使うに値すると思ったときだけ使えばいい
659 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 04:01:38 ] Birdの一派は「ポイントフリーの方がプログラムの本質が一層明らかになる」とか主張するんだよね
660 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 04:21:26 ] 彼らの変形萌えぶりをみれば、 それほど無茶を言ってないと思えるよ。 プログラム変換(人力)で成果挙げてるからね。
661 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 00:32:30 ] Haskell のテストコード書いたり、簡単な実行したりコードさらしたりするにはここへカモン。 codepad.org/ コードを書いて実行した時のURLを記録しておけば、 実行結果も一緒にさらす事が出来て幸せです。
662 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 04:41:11 ] なんであんたあちこちで宣伝してんの?
663 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 12:06:11 ] GHCのドキュメントをMakeするときに必要な stringparamっていうプログラムって何でしょうか?これが無いせいでhtmlドキュメントが生成できません xmlproc関係のものだと言う気はするんですが、検索しても見付かりません 入手方法など情報お願いします
664 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 12:20:15 ] stringparamはプログラムじゃなくてxsltprocのコマンドラインオプションじゃないか?
665 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 21:14:03 ] なるほど、どもです どうやら原因はMakeの中で上手くxsltproc関連の変数が設定されてないのが原因でした
666 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 01:33:37 ] 以下のコードでtimeout関数の動作確認をしたのですが、 うまく動作しません。何がいけないのでしょうか? import System.Timeout main = do a <- timeout (3*10^6) getLine print a
667 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 02:07:19 ] >>666 俺の環境(Linux x86 ghc-6.8.2 base-3.0.1.0)だと動いたよ windowsだとHandleからの入力でブロックするときにselectを使ってないから、そのせいかも
668 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 19:56:39 ] モナドとかって解りやすく 書いた論文とかありますか? PARSEC使いたいのですが どうにも曖昧で
669 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 20:15:35 ] >>668 I Love Ruby本
670 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 20:50:09 ] >>668 つ "The marriage of effects and monads" つ "Tackling the awkward squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell" ググればPDF手に入る
671 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 20:56:19 ] parsec使うのにモナドの知識は必要ないけどな >>670 Tackling...はIOモナドについての論文じゃないか?
672 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:02:17 ] だったら何?
673 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:06:05 ] モナドについて知りたがってる奴にIOモナドの事を教えてもしょうがないだろ 群について知りたがってる奴に整数を教えるようなものだ
674 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:08:14 ] >>673 あとkindとかって数学の眠い本永遠と 読まないと理解できないかな? 圏とかまじで数学本気でやってねーから解らん
675 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:18:11 ] kindは全然難しいものじゃない 「Maybe Int」型の式は存在するけど単なる「Maybe」型の式は存在しないとか、 「Maybe Maybe」っていう型は不正だとか、そういう次元の話
676 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:21:18 ] パージングするとIOモナとの連携は付き物だから、 >>668 は知りたくなるんじゃないかな? 知らなくてもPARSEC使えるけどね。
677 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:28:50 ] 知らなくても使えるんだけど 背景とか基礎的な内容知りたく ならない? ならない、そうですかそうですか.....
678 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:41:01 ] Trends in functional Programmingって毎年出てるの?
679 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 01:49:14 ] >>668 "Monadic parser combinators"ってテクニカルレポートが 仕組みやモナドの解説が分かりやすく書いてあってよかった。
680 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 09:06:14 ] 自分は手続き型のメジャー言語を普段使っている人間ですが、最近関数型が話題になって 勉強しているところです。 この板の書き込みもそうですし、実際に出版されている本の数や内容など見ると、まだ Haskellのような言語は研究者レベルの言語なんでしょうか。 個人的には今後アプリがマルチプロセスに対応せざるを得ないとか、複雑性が上がる 中で処理の信頼度を一層高める必要がある中で、Haskellのような言語がある時期から 一気にパラダイムシフトを引き起こすのじゃないか、とか妄想していますが、単なる 妄想ですかねw
681 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 09:25:48 ] Haskellは、ある時期と言わず今、実用プログラムを(分野にも依るけど)書く上で有力な言語だと思うよ その意味で、Haskellは既に研究レベルの言語ではない 一方で、今のHaskell利用者に占める研究者や学生の割合はそれなりに高いだろうし、 Haskellが研究の道具として使われてるのも事実だから、その意味で研究者の言語だ
682 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 09:59:31 ] >>680 遅延評価のHaskellから、 > ある時期から一気にパラダイムシフトを引き起こすのじゃないか ってのはちょっと難しいだろうね。 > 研究者レベルの言語 こういう考え方はよくわからない。 自分の腕を上げるために必要なことは学べばいいだけなんで。
683 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:01:57 ] immutableにするとスレッドセーフになるのは分かる 代入ができなくても別に困らない、というのも分かる 分からないのは遅延評価 原則的にはeagerにして必要なときだけ明示的に遅延するのでは駄目な例ってないすか
684 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:10:05 ] >>682 > 遅延評価のHaskellから、 > > ある時期から一気にパラダイムシフトを引き起こすのじゃないか > ってのはちょっと難しいだろうね。 これはどういう意味でしょうか?
685 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:12:07 ] >>683 駄目ってことはないんじゃないか? Haskellは、原則的には遅延で必要なときだけ明示的にeagerという立場だから、 Haskellコードを、デフォルトがeagerな言語に翻訳するのは機械的な書き換えで済む どっちをデフォルトにするのが便利かは議論の分かれるところじゃないだろうか
686 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:16:32 ] >>683 「つまらない」そこが駄目
687 名前:680 mailto:sage [2008/04/06(日) 10:24:01 ] >>683 SICPなんかだと、参照透過性と遅延評価をStreamの項で関連付けて いたりしますが、その辺へのこだわりではないんでしょうか?
688 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:33:23 ] 1988年?ぐらいの関数言語を実装するための 本があるはずだけど あれみれば遅延評価背景わかるはず 本の名前が解らん
689 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 11:17:06 ] >>688 research.microsoft.com/~simonpj/papers/slpj-book-1987/index.htm これ? lazy evaluationの正当化は194ページにちょっとあるだけかな
690 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 11:23:03 ] >>689 おーそれそれ あとどれだったかなぁ
691 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 19:27:55 ] 日本だとどっちを先に読めって言われてるの? ・Introduction to Functional Programming Using Haskell www.amazon.co.jp/exec/obidos/ASIN/0134843460/ ・Haskell: The Craft of Functional Programming www.amazon.co.jp/exec/obidos/ASIN/0201342758/
692 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:25:11 ] >>691 自分はCraftを先に読みました。Craftは所謂Haskell言語の入門書だと思います。 Introduction〜はHaskellの入門というよりも、関数型言語の原理原則を中心に 展開する書物ですね。自分は今読んでる途中です。 どちらもよい本だと思います。
693 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:25:18 ] >>691 欧米だとどっちを先に読めって言われてるの?
694 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:28:17 ] 片方が初級で片方が中級、とかではないですね。
695 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 20:46:40 ] >>693 俺の恩師のイギリス人のじいちゃん先生 だと、今の若い人間には退屈すると 長続きがしないだろう。好奇心だけでは どうしても無理だろう。といって、Craftを 読んで言語を理解しなさいと言われたなぁ
696 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 00:14:53 ] このすれの住人って 俺以外に、5人しかいないだろ?
697 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 03:08:19 ] 日本でHaskellやってる人間なんて100人未満だろうな
698 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 03:13:05 ] だってモナドって何ですかって聞くと 「圏論について勉強するといいよ」って返されるんだもん そしてwikipediaで圏論の説明見てわからず涙目になる俺
699 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 04:11:20 ] >>697 3000人じゃなかった?
700 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 06:33:59 ] Haskellでモナドを使ったり作ったりする分には圏論の知識なんて要らないけどな
701 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 10:04:01 ] >>699 そのうち何人が実際にソフトウェアを記述するかといったら100人未満だと思うよ
702 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 00:19:34 ] Webの自動テスト Haskellで書くと面白いんだけど Arrowが良くわからん あれが必要ななんでどうまくつかいこなせない
703 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 06:49:34 ] ?
704 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 08:26:47 ] 和訳すると、 「よくわからないArrowが必要なせいで、うまく使いこなせない。」
705 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:22:44 ] arrowより日本語を使いこなした方がよいのでは…
706 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:38:51 ] まぁ、arrowよりも日本語の方が長く使うだろうからなぁ。
707 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:42:17 ] 分からないぞ、突如GHCが日本を占拠して日本語の代わりにHaskellを使うように命じられるかもしれない。
708 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 18:48:55 ] それは中国が世界を支配する確率とどちらが高いかね?
709 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 20:42:39 ] GHC とは General Headquarters Compiler の略だったのか・・・ ギブ・ミー・モナド
710 名前:デフォルトの名無しさん [2008/04/10(木) 11:30:08 ] >>702 Arrowが必要なのは、Arrowベースのテストツールかなにかを 使ってるからなんだろうけど、なに使ってるの?