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の仕様により、行頭の半角スペースは表示されません。 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
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ベースのテストツールかなにかを 使ってるからなんだろうけど、なに使ってるの?
711 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 21:50:55 ] >>710 作ってるのw
712 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 11:39:16 ] しかし雑談ばっかりだなこのスレ
713 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 11:56:43 ] うまく使いこなせないのに必要だと分かって作ってるんですか
714 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 23:23:30 ] モナドってHaskellに限った考え方ではなくて、もっと一般的な考え方なんだよね? ほかの言語にモナドの考え方を応用したようなライブラリが、もっとあってもいいと 思うんだけどな。副作用嫌いな人は喜ぶと思うんだけど。そうでもないのかね。
715 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 23:36:10 ] すでに他の言語でもあることない? すんごいマイナーだけど
716 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:17:35 ] Python でモナドを実装してみたよ、ってのはネットで見た気がする。
717 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:19:07 ] これだ。 www.valuedlessons.com/2008/01/monads-in-python-with-nice-syntax.html
718 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:47:54 ] つ okmij.org/ftp/Scheme/monad-in-Scheme.html つ okmij.org/ftp/Computation/monadic-shell.html
719 名前:デフォルトの名無しさん [2008/04/12(土) 21:48:14 ] 引く手あまたのプログラミング言語は? 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以下だったそうだ。 ---
720 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 23:28:51 ] JavaはともかくC#はどうかな…? 10年後には残ってない気もするが。
721 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 00:54:40 ] そんなことよりもHaskellの求人が存在するのか!! どんな仕事だ?
722 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 02:47:10 ] リンク先まともに読んでないが 単に列記されてるのカウントしてるだけじゃねーの?
723 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 03:03:37 ] HaskellとかOcamlの仕事とかどんなんか見てみたい 研究用じゃないよな
724 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 03:05:42 ] Haskellでグラディウスを作る仕事です。 誰でも簡単にできる楽しい作業です。 初心者歓迎。
725 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 08:25:34 ] 0 <= 10 → True
726 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 08:30:48 ] 0は10以下でないとか、全部は一部でないとか、空列は列でないとか、自然言語には奇怪な慣習があるのです
727 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 09:21:12 ] Hugs> -10 <= 10 True
728 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 10:27:42 ] Haskellerお断り 10件w
729 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 11:00:54 ] アメリカの大学では、(企業もだけど) フルタイムやパートタイムの非常勤プログラマーを雇うことがあるから、 Haskellはその類いかも知れない。
730 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 11:10:29 ] >>723 www.janestcapital.com
731 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:02:12 ] だけど、関数型言語の勉強は仕事で使わなくてもやったほうが いいと思うけどな。手続き型で出やすい不具合をどう防ぐか、 無駄の無い記述をどう実現するか、とか勉強になること多いと思うよ。
732 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:08:30 ] 個人的には手続き型ベースのOOPLのコーディングに影響があったかというと微妙な気が。 具体的にどういうこと?
733 名前:デフォルトの名無しさん [2008/04/13(日) 13:11:08 ] 一々メソッドや変数の名前を考えるのが面倒で コーディングする気力が萎えて来るとか…
734 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:18:35 ] 海軍でhaskell使ってると思う どこの国かは言えんが topでGHCかりかり動いているみたことある
735 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:25:20 ] lambdaの導入とかそういう文法レベルでの影響は0ではないか。
736 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:30:55 ] C++は次でラムダ実装する Intelのスレッドライブラリもラムダ標準実装 C#も次期バージョンのサポート予定 Javaはかすだけどサポートするらしい(いらねw
737 名前:デフォルトの名無しさん [2008/04/13(日) 13:56:04 ] あるとか無いとか、仕様のマトリックスを埋めるだけなら意味無いよ C++ 自体がイラネ
738 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 14:04:04 ] >>732 いや、単純に(再)代入が許されない世界で、再起を使うとか、リストデータを 編集してそこから必要な情報抜くとか。そういうの訓練すると影響あるんじゃない かなぁ。 手続き型だと「要するにこれはどういう処理か」って考えずにずらずらと手続きを 書き連ねていって、目的のデータを何とか作ってしまう、とかなりがちだけど、 その辺が意識変わると思うんだけどね。
739 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 14:12:31 ] 副作用を0にするって考えは 通常の手続き型に慣れると そうぞうすらしない奴も多いから F言語はシンプルな世界観を持つ ためにはある程度知る必要があると おもふ 別に変態的に知る必要はまったくないけど それよりCraf本読むのに6時間かけてまだ 6章しか読めん俺はおわっとる
740 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:52:54 ] >>736 VBで既に導入されてなかった? >λ式
741 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 17:53:27 ] C#にも既に入ってる