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の仕様により、行頭の半角スペースは表示されません。 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
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