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の仕様により、行頭の半角スペースは表示されません。 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
592 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 04:50:00 ] >>590 まず、今までループで処理してたところを全部再帰で考え直してみようよ。 再帰処理の部分を一般化して関数にできないかどうか考えてみようよ。
593 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 04:50:39 ] SICPってMITの1年生用の教科書でしょ?
594 名前:577 mailto:sage [2008/03/02(日) 08:02:16 ] >>591 ありますけど、理科系研究の実習用プログラムとかではない限り、あまり 使われないんじゃないかと思います。実際、言語の入門書類でも大きくは 扱われませんよね。 >>592 再起はそんなに戸惑いはありませんでした。どちらかと言えばループが 手続きの部分として扱われるのに対して、関数型ではそういう書き方は あまりしない(醜いコードとなる)ってことですね。 >>593 そうです。すごい良書だと思います。
595 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 10:43:26 ] >>594 > 実際、言語の入門書類でも大きくは扱われませんよね。 入門書は年々数が増えていっていると共に、 糞本の割合が増えていっているから、 入門書一般の常識はいまや非常識といっていい状態。 本格的に取り組む入門書は嫌われるから。 関数型言語、特に本場の本は良書が多くてそういう心配はないんだけど。
596 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 10:51:29 ] 古くても良書とされている入門書を店頭にわかりやすく並べている 本屋の数は、日本に人間の指の数ぐらいしか無いんではなかろうか。 他は次々と出る駄本の新刊を並べてるだけ。
597 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 10:53:22 ] Rubyなんかだとmapやinjectを使うのが当たり前かと思ったけど、そうでもないのか
598 名前:577 mailto:sage [2008/03/02(日) 11:26:03 ] >>595 自分はSICP読んで、何でもっと早くに手に取らなかったのか、と後悔してます。 >>597 Rubyのそういった機能は関数型由来のものですよね。C言語系列の手続き型 にはあまり登場しないんじゃないかと思います。
599 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 12:03:41 ] 使えないand/or使いたがらないand/or嫌悪する奴もまたいますな
600 名前:デフォルトの名無しさん mailto:sage [2008/03/03(月) 23:34:31 ] and と or って左結合?
601 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 13:53:14 ] THE HITCHHIKER'S GUIDE TO THE HASKELL 「HASKELL の歩き方」 ttp://ha6.seikyou.ne.jp/home/yamanose/haskell/home.html web上の日本語の入門文書で、言語全体をカバーしてるのは初めてじゃないだろうか
602 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 18:12:31 ] >>601 なぜに自転車屋のホームページ?w ラジオ部 って何?w モナドに関して、あえて説明しないってのは、入門としてはありかもね。
603 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:38:42 ] Parsecを理解できる書籍って 普通のHaskellが妥当かな?
604 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:55:56 ] ひらがなで書かないと書籍名に見えないw
605 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 09:07:55 ] >>603 つ www.cs.nott.ac.uk/Department/Staff/gmh/monparsing.ps
606 名前:602 mailto:sage [2008/03/07(金) 13:57:47 ] よく見ると>>601 って、 手続き言語的にHaskellを解説してるように思えるな…。 こういう入門書でHaskellを学ぶ人が多くなると、 オブジェクト指向の時みたいに混乱しそう…。 初心者のオレでも?なコードがある…。
607 名前:606 mailto:sage [2008/03/07(金) 15:35:46 ] あぁ!「?なコード」は >>601 でなくて、>>601 で参照してる↓だった 関数型プログラミング言語 Haskell 早巡り ha6.seikyou.ne.jp/home/yamanose/haskell/INTROHUG.HTML
608 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 17:08:28 ] 最近のライブラリはほとんどarrowベースになってるんだなぁ・・・
609 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 21:39:33 ] >>608 自分、Craft読み終えたばかりでモナドも入り口しか知らない… 道は遠いなぁ
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ベースのテストツールかなにかを 使ってるからなんだろうけど、なに使ってるの?
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#にも既に入ってる
742 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:29:34 ] C#とかにλ式が導入されるとか、ちょっと意味不明というか、統一感が無さ過ぎる感じが するがどうなんだろうか。だったらF#とかでいいじゃないか?って気がするけどな。 実はF#への移行の布石だったりして。
743 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 20:58:22 ] 元々あった無名delegateの構文を整理しただけだから、そんなに大袈裟な話でもない どっちにしろ、まともな高水準言語なら無名関数の類はあって当然で、統一感とか気にしてる場合じゃない 次は代数的データ型とパターンマッチに相当するものが入るといいな
744 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:12:29 ] >>743 >まともな高水準言語なら無名関数の類はあって当然で、 私が言葉尻に拘ってるのかも知れないが、なぜ?
745 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:22:47 ] >>744 上であがってる古い関数言語の実装の 論文読んでみなよ何が要素として定義 されていて必要なのかわかるから
746 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:27:35 ] >>745 でもC++とかには(少なくとも現在の規格では)無いわけだし、 実際無名関数みたいな仕組みは無くてもプログラムを組むことはできるし、 それらの事実を踏まえた上で>>744 は>>743 が「あって当然で」と言っているその考えを聞きたいんだと思うんだが。 あった方がプログラミングが綺麗になる部分もあるのは当然の話だが。
747 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:29:40 ] それこそ言葉尻じゃねw モダンな言語は取り入れる傾向にあるとでも読み換えたら。
748 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:47:26 ] >>746 OOが無くても手続きはできるし アジャイルがなくてもそれ相当のことはいくらでもできる。 Cで、どんな手段でもOKならfor_each構文を作ることもできる 結局、ラテン語やその他の自然言語がどんどん変革していったように プログラミング言語も変わっていくだけだと思うよ ただそこには、今まで苦労した結果を簡単に置き換えることで 本当の問題にどれだけ注視して取り組めるようすることを 追求しているだけだと思うよ。リスクの低減と開発効率の上昇 自然言語に対する機械言語の仕様変更とイディオムの変更は とてつもなく早いのでそれに対する拒否反応や疑問は常時出てしまうけど それは仕方のないことだろうし。まぁ慣れてくれ
749 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:34:46 ] >>746 > でもC++とかには(少なくとも現在の規格では)無いわけだし、 今もあるぞ、制限が多いだけで。 C++0xで言語自身に組み込みになってより強力になる。
750 名前:デフォルトの名無しさん [2008/04/14(月) 01:01:34 ] C++ にクロージャ入れても意味が無い
751 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 02:45:24 ] わざわざ関数オブジェクトクラスを定義しなくて良いという くだらないが重要な利点があります
752 名前:デフォルトの名無しさん [2008/04/14(月) 08:38:21 ] そして文法が果てしなく汚れて行く…
753 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 08:52:25 ] Haskell には今話題にあがってるような、構文、言語機能の拡張ってないの?
754 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 17:18:28 ] 提案されてきた拡張は数えきれないくらいある いくつかはGHCにも実装されてるし
755 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:34:05 ] C#にクロージャとかって、どうも奇妙な感じがするのは、関数型言語って 自然数なんかもλ式で表現する、つまり「全ては関数なり」という一貫 した思想に基づいて設計されてるわけでしょ? C#やJavaなどのオブジェクト思考言語って、値が全てなんだよね。 値を操作するために関数がある。そこにクロージャとかって、何か 意味があるのかね。
756 名前:デフォルトの名無しさん [2008/04/14(月) 20:41:20 ] オブジェクト指向言語を知らないからそう思うんじゃないの。 オブジェクト指向言語で関数オブジェクトを扱えるのは別に おかしな事じゃない。関数型言語でオブジェクト指向する事も 出来るし。
757 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:47:01 ] >関数型言語って >自然数なんかもλ式で表現する、つまり「全ては関数なり」という一貫 >した思想に基づいて設計されてるわけでしょ? これがそもそも勘違い 例えばHaskellのIntは関数じゃない C#やらJavaScriptやらにクロージャがあって役に立つのは事実 例を知りたければ適当に検索すればいくらでも見つかると思う
758 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:04:05 ] 副作用がある言語のクロージャってのも、 それはそれで使いでがある。 SICPをやってみればわかるけども。
759 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:24:38 ] >>756 それってUtility的なものでしょ? どうも変な感じするけどなぁ。
760 名前:デフォルトの名無しさん [2008/04/14(月) 21:36:49 ] そりゃ、あんたがどう感じるかで言語設計している訳じゃないからな。 オブジェクト指向が値が全てと言うのは勘違いだし、クロージャも みんな昔から便利に使っている。それだけ。
761 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:50:02 ] なんだこのNOOBどもは 小学生の議論してんなよ
762 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:51:03 ] あ、そうw いや、俺が感じるというか、計算モデルがそもそも違うと思うんだけどね。 まぁ、いいかw
763 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:53:29 ] なんかさ、大学でちょっとかじったぐらいのやつらの話ってうざくね? いかにも知ったかぶった感じで話すやつら。
764 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:54:57 ] ネトゲ厨降臨中
765 名前:デフォルトの名無しさん [2008/04/14(月) 21:55:00 ] >>762 アクター理論とかはどうなの?
766 名前:デフォルトの名無しさん [2008/04/14(月) 21:57:48 ] OO 特有の計算モデルとかあるの?
767 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:15:57 ] 昨日教科書読みました、みたいな発言やめてください。 背中がむずがゆくなります。
768 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:19:30 ] 偶然ですね。私も昨日SICP読みました。さっぱりわかりませんでしたがw
769 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:21:28 ] 学のない奴が語っちゃいけませんかそうですか
770 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:22:47 ] 学の無い人間は尋ねる側ので、語る側ではないな。
771 名前:デフォルトの名無しさん [2008/04/14(月) 22:23:40 ] じゃあ頭の出来が違う人達に語ってもらおうぜ
772 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:28:21 ] 命令すんなよw
773 名前:デフォルトの名無しさん [2008/04/14(月) 22:30:06 ] それなら気が向いたらでいいから宜しく頼むわ
774 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:30:13 ] >>762 は学のあるなし以前に、自分の意見をまじめに伝えようとしてないから、相手にしないほうがいい
775 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:37:10 ] Haskellの拡張については 昨日教科書読みました 程度では語れるレベルじゃないから、 Haskellでの実装の話しろよ。
776 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:05:51 ] BrainfuckでHaskell作ろうぜ
777 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 07:30:06 ] Haskell初心者ですが、勉強した印象として構文が若干 多いかな?という感じがします。型に関係する部分とか 特に。 これってHaskellerの間で議論があったりするんでしょうか。 比べてはいけないんでしょうけど、Schemeのようなシンプルさ で同じような型チェックができたら最高なんですが。
778 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 08:25:11 ] それはCとC++比べてるようなもんです。どうしても嫌なら、 ML系のオブジェクト指向が入ってないのをやってみてはどうでしょうか。
779 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 10:31:09 ] OCaml?
780 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 18:26:40 ] >>779 たぶんCaml liteの方。でなきゃSML。
781 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:15:56 ] >>777 ぐちぐちうぜーこと言ってるなら 使うな辞めろうぜーんだよ お前のチラ裏報告なんて誰も 求めてねぇよ さっさと消えろよ
782 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:39:09 ] >>777 厳格な型付けをする言語では避けて通れないんじゃないの。むしろ、それを望む人には 必要不可欠かと。
783 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:47:46 ] 空気読まずに失礼しますが、 runhaskellの引数にプログラムを書いて実行する方法はありますか? たとえばrubyだと $ ruby -e "print 'abc'" のように書くことが出来ますよね。 同じような使い方をHaskellでしたいんです。
784 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 05:22:47 ] ghc -e 'putStrLn "abc"' Hugsだと多分無理
785 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 20:56:38 ] >>781 かわいいw
786 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 23:48:13 ] Types and Programming Languages と Introduction to Functional Programming Using Haskell カバーしてる内容全然違う?
787 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 00:32:17 ] はい、上は型理論の入門書です。 数学分からない人は絶対に読むべきじゃないです。
788 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 00:36:37 ] >>787 ここ数年の少年ジャンプの面白さを 発見するよりは簡単なはずだが?
789 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 00:44:07 ] >>788 「型推論のHindley-Milner type inference」とかでピンと来るならいいんじゃね。
790 名前:デフォルトの名無しさん [2008/04/20(日) 00:46:08 ] 数学界ってネタ切れなんかね
791 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 05:25:06 ] TAPLに数学なんか関係あったか? どのへん?
792 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 07:19:16 ] 数学は万物と関係があります
793 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 08:26:36 ] 確かにそうだが随分とアバウトな答え方だね
794 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 09:45:15 ] 本の最初のLessonで main = do cs <- getContents putStr cs というサンプルがあったのだが,このまま打ち込んでも The last statement in a 'do' construct must be an expression と出る.どうすれば...?
795 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 12:09:38 ] >>794 二行目の先頭にちょうど10個のスペースを入れてる?
796 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 15:58:12 ] >>794 ttp://www.ice.nuie.nagoya-u.ac.jp/~h043078b/wiki/wiki.cgi?page=%CA%B8%CB%A1%BB%F6%B9%E0+-Haskell-#p19
797 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 20:41:46 ] >>795-796 Emacsを使ってるのですが,するとEmacsの自動インデント 機能に難ありということなのでしょうか...
798 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 22:51:23 ] >>797 Emacsはよく知らんが、Tabをスペースにかえればいいんでないの?
799 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 22:55:19 ] 関数型プログラミング言語Haskell Part7 pc11.2ch.net/test/read.cgi/tech/1174211797/ 213 :デフォルトの名無しさん:2007/04/07(土) 18:00:15 すいません。emacsのhaskell-modeでプログラムしているんですが、 インデントの方法に関して質問があります。 例えば、次の様なソースがあった時、 import System import System.IO main = do putStrLn $ "Woud you like some coffee?(y/n)." hFlush stdout c <- getChar if c == 'y' then putStrLn "Yes,please." else putStrLn "No,thank you." thenやelseの前でTabキーを押すと、if式と同じインデントになってしまうのですが、 それだとコンパイルエラーになってしまいます。なので、今はスペースでインデントを 付けています。Tabキーで正しくインデントさせる方法がありますでしょうか?
800 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 22:56:16 ] 関数型プログラミング言語Haskell Part7 pc11.2ch.net/test/read.cgi/tech/1174211797/ 215 :デフォルトの名無しさん:2007/04/07(土) 19:31:19 >213 明示的に {} を使うという方法はあるにはあるが。 do { putStrLn $ "Woud you like some coffee?(y/n)." ; hFlush stdout ; c <- getChar ; if c == 'y' then putStrLn "Yes,please." else putStrLn "No,thank you." } のようにすると綺麗にインデントできる。 まぁ私は手で空白を入れたり一行にしちゃったりする方が多いけれど。 216 :デフォルトの名無しさん:2007/04/08(日) 17:57:02 >>215 レスありがとうございます。 {}を使う方法か、手動でインデントをあわせる方法の2通りという事ですね。 他の方はどうやってインデントさせているのか疑問に思っていたのですが、 その疑問が解消されました。
801 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 02:56:48 ] Tabをもう一回押すんだよ。
802 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 03:05:24 ] www.fobj.com/hisa/d/20060828.html