1 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 01:34:05 ] C/C++>>>>(越えられない壁)>>>Haskell
2 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 01:36:14 ] 2
3 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 01:42:53 ] そもそもC/C++とHaskellを同列に比較しようという時点で>>1 は池沼。
4 名前:デフォルトの名無しさん [2005/09/30(金) 01:46:03 ] 親が4様かっこいいとか言ってる(泣き
5 名前:デフォルトの名無しさん [2005/09/30(金) 04:40:27 ] すげー直感的に意味不明。 qsort [] = [] qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x where elts_lt_x = [y | y <- xs, y < x] elts_greq_x = [y | y <- xs, y >= x]
6 名前:デフォルトの名無しさん [2005/09/30(金) 07:48:30 ] 単位もらえずに逆恨みかい?プゲラ
7 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 09:32:51 ] 名スレ
8 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 10:08:59 ] >>5 それが直観的に理解できないということは素養が足りない。かなりやばい。 日本語にすると理解できたりする? qsort [] = [] qsort (x:xs) = qsort x未満の要素 ++ [x] ++ qsort x以上の要素 ここで x未満の要素 = [y | y <- xs, y < x] x以上の要素 = [y | y <- xs, y >= x] クイックソート自体を知らない奴でもこれで理解できるだろうというくらい わかりやすいと思うが。
9 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 10:49:15 ] C/C++で実装されているperl6は近年最強のベイパーウェアと化していたが、 Haskellで実装されたperl6は既に動いている。 よってHaskell>>>超えられない壁>>>C/C++
10 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 14:34:49 ] アホの言う「直感的」=「自分の知ってるものに似ている」
11 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 17:17:55 ] >>10 同意
12 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 17:48:56 ] >>9 じゃなんでゲームプログラマーはHaskell使わずにC/C++使うの?
13 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 18:36:47 ] なんで突然「ゲームプログラマー」がでてくるんだろう。
14 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 18:41:36 ] ゲーム→ウェブブラウザ上で動くゲーム→CGI == Perl ~~~
15 名前:デフォルトの名無しさん mailto:sage [2005/09/30(金) 20:12:54 ] ウェブブラウザ上で動くゲームといえば 爆裂ブロック崩し→Java 脱出系ゲーム→Flash == ActionScript じゃないのか っていうか、俺、Javaってほぼそのためだけにインストールしているような希ガス(w
16 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 08:51:00 ] haskellってどんな用途で使われているの? 銀行業務とかの大量バッチとかでは使わないよね。
17 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 14:04:02 ] >>16 素因数分解とか... なんか数学者がアルゴリズムを思いついてパッと評価したいときに 使われるような言語というイメージを持っているんだけど..
18 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 21:45:06 ] >>17 スレタイ通り、数学者に特化しか言語ってことですか。 おれみたいなデジドカに縁は無さそうだ。。。 (勉強すれば世界は広がるだろうがね)
19 名前:18 mailto:sage [2005/10/01(土) 21:45:55 ] >>18 特化しか、だってw 特化した、ね。
20 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 22:48:33 ] まぁこういうスレたてる奴はC/C++自体まともにつかえるのかね? すこし疑問だ。 まともプログラム組めないのに中途半端に手を出してる気がする。
21 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 23:42:48 ] haskellは美しい言語だと思うが それを"Cで実装すると予想される遅さ"程度に遅い
22 名前:デフォルトの名無しさん mailto:sage [2005/10/02(日) 00:01:51 ] >>20 デジドカにとって最もすばらしいのはどんなに変に書いてもバグがでず、なおかつ理由は良く解らないが難しいという事で単価の上がる言語の事 ・・・COBOLか
23 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 12:54:36 ] >>12 C/C++と比較して遅い、メモリ食いすぎだからゲームには不向きなんだろうな。 そしてなによりプログラマの絶対数が少ないのがネック。 一方でPagsの例しかり、言語処理系の実装には最強? >>20 むしろ1はHaskellerで、この優れたマイナー言語に目をひくように あえて煽るようなスレを立てたような希ガス
24 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 15:37:26 ] 最近Haskellを学び始めたC++プログラマの俺に言わせると、 Haskellはとかく宣伝でモナドが強調されるのがネガティブキャンペーンに なってるとしか思えん。 C++のテンプレートライブラリで入り組んでくるとconstやら参照やらが 足引っ張るのとかxxx_typeをtypedefするお約束やらがあったりとか templateでmetaprogrammingやっちゃったりとかよりはマシな厄介さ だと思う。 そういうC++のアドホックな仕組みの積み重ねよりはHaskellの論理的に まとまったものの方がちゃんと相手をするには楽だし、 コンストラクタの例外安全とかC++のとかく落とし穴の多さを考えると ずっと楽と言えるかも知れん。
25 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 16:48:20 ] >>5 [y | y <- xs, y < x] これは、数学で言うところの { y | y ∈ xs で y < x } という集合のこと。ただし集合でなくてリスト(重複OK, 順序あり)。
26 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 16:49:52 ] >>24 > xxx_typeをtypedefするお約束やらがあったりとか お約束というかtypetraitsのcheck実行機構としてtypedefを使っている。
27 名前:デフォルトの名無しさん mailto:sage [2005/10/04(火) 01:15:43 ] C/C++>>>>(越えられない壁)>>>Haskell>>>>(越えられない壁)>>> >>1
28 名前:1 mailto:sage [2005/10/12(水) 09:46:26 ] >>25 ごめんなさい。これで大体わかりました なるほど、確かにわかりやすいかもしれません [x | x^2 + x + 2, x > 20] とかかけちゃうわけですか、こりゃすごいかも...
29 名前:デフォルトの名無しさん mailto:sage [2005/10/13(木) 05:50:13 ] かけないお
30 名前:デフォルトの名無しさん [2005/10/17(月) 16:38:41 ] >1それ以前に初耳
31 名前:デフォルトの名無しさん [2005/10/22(土) 10:51:01 ] こういうスレが伸びるようになればHaskellも市民権を得たと言えるだろうな
32 名前:デフォルトの名無しさん mailto:sage [2005/10/23(日) 01:06:31 ] ぐぐって頭のほうに出てくるやつで十分? よく知らんからお勧めのリンクあったらはってくれ
33 名前:デフォルトの名無しさん mailto:sage [2005/10/23(日) 12:05:41 ] Z = [1..] [x^2 + x + 2 | x <- Z, x > 20] 配列のSWAPとか素晴らしい性能を持ってるお ^ ^
34 名前:デフォルトの名無しさん mailto:sage [2005/10/23(日) 17:03:07 ] 妖怪図鑑 其の百三十六 _,,..i'"':, 妖怪 箱ティッシュ |\`、: i'、 \ \`_',..-i オナニーして逝きそうになると \|_,. -┘ ティッシュが手元に無い。 タタタッ _ノ ) ノ それは妖怪箱ティッシュの仕業です。 ノ /// _// | (_ 弱点は水に濡れると死ぬこと。
35 名前:デフォルトの名無しさん mailto:sage [2005/10/24(月) 09:48:53 ] >>33 [x^2 + x + 2 | x <- [21..]]
36 名前:デフォルトの名無しさん mailto:sage [2005/10/24(月) 21:48:49 ] >>33 N=[1..] [x^2 + x + 2| x<-N, x>20]
37 名前:デフォルトの名無しさん mailto:sage [2005/10/25(火) 23:29:02 ] 言語処理系にしか使えない言語・゚・(ノД`)・゚・。 >>24 Haskellでもfundepsでメタプログラミングができるよ。 もちろん画面を埋めつくすエラーメッセージ付きだ。
38 名前:デフォルトの名無しさん mailto:sage [2005/10/25(火) 23:31:33 ] Haskellは10年後の言語です
39 名前:デフォルトの名無しさん mailto:sage [2005/10/27(木) 22:04:55 ] 10年後も10年後なんだよな。
40 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 14:47:55 ] >>5 間違ってるよ [x] と [x 以上の要素] を連結してるから ソート後のリストに x が2つ入っちゃう
41 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 15:05:38 ] >>40 間違ってないよ xとxsに分離されてるから x以上になってないと[1,3,1,4]をqsortしたとき要素が減ってしまう
42 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 15:33:15 ] そうだった スマソ
43 名前:デフォルトの名無しさん mailto:sage [2005/11/16(水) 21:50:57 ] >>37 リアルタイムゲームも書ける ttp://www.geocities.jp/takascience/windows/monadius.html
44 名前:デフォルトの名無しさん [2005/11/19(土) 12:28:18 ] _ ∩ ( ゚∀゚)彡 ハスケル! ハスケル! ⊂彡 www.haskel.com/
45 名前:デフォルトの名無しさん [2005/11/22(火) 00:44:19 ] 手続きコード無闇に繋いでも今は無駄だよ 大抵の処理は 高階関数一つで終わりさ 関数型のIOを守るためお前は考え 便利さ見失った 手続き忘れた インターフェース<かお>など見たくはないさ IO 取り戻せ
46 名前:デフォルトの名無しさん [2005/11/22(火) 07:51:08 ] 僕はようやくスレをageた。やれやれ。
47 名前:デフォルトの名無しさん mailto:sage [2005/11/22(火) 07:55:05 ] 本スレが余りに学術的で居心地が悪くなった Haskellネタ師の溜り場はここですか?
48 名前:デフォルトの名無しさん mailto:sage [2005/11/22(火) 23:22:30 ] しかし、数学者からみたら他の言語よりはマシだが、まだまだ不満はあるよな。
49 名前:デフォルトの名無しさん [2005/11/23(水) 00:56:10 ] 理論的な見地でもまだまだ。処理系の実装においても、 C,C++とはまだ吐き出されるコードに雲泥の差がある。 まだまだ中途半端な存在なんだね。
50 名前:デフォルトの名無しさん [2005/11/26(土) 22:20:52 ] 本スレが余りに過疎で居心地が悪くなった Haskellネタ師の溜り場はここですか?
51 名前:デフォルトの名無しさん mailto:age [2006/01/27(金) 01:34:14 ] 入門書がでるってはなしはどうなりましたかね?
52 名前:デフォルトの名無しさん mailto:sage [2006/01/27(金) 02:09:55 ] 入門書出すことに意味があるのかどうか。。 そんなに一般人に媚び売ってどうすんの?
53 名前:デフォルトの名無しさん [2006/01/27(金) 19:33:12 ] あげ
54 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 23:32:25 ] Haskellの是非は置いといて>>8 には全く同意できない。
55 名前:デフォルトの名無しさん mailto:sage [2006/01/28(土) 23:52:03 ] >>54 たしかに++とか:とかの意味を知らないと>>8 では理解しようがないけど、 Haskellを知っていてクイックソートを知らない奴がかりにいたとすると やっぱりそいつは>>5 を見て即座にクイックソートを理解すると思う。 その意味で、>>8 が言ってることもそんなに外れてないような気がする。 関係ないが、Rubyあたりでクイックソートを書いても似たようなものになるはずなのに なんでHaskellの特徴みたいに扱われてるんだろう…
56 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 00:44:06 ] プログラムとしては全然直感的じゃないな。 数式に近い
57 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 02:12:39 ] 手続き型言語じゃないからね。
58 名前:デフォルトの名無しさん [2006/01/29(日) 07:12:15 ] 高学歴用言語ですかね
59 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 07:15:16 ] Haskell の IRC は賑わってるから、イパーン人も多いんじゃないの。 meme.b9.com/start.html
60 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 11:10:00 ] >>56 俺にはむしろ手続き型のほうが直感的に思えない
61 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 11:26:33 ] それは、抽象化された物が直感的と考えるか、具象化された物を直感的と考えるかの違いじゃないかな。 やっぱり Haskeller は、Haskell のコードからどんなアセンブラが生成されるか直ぐに分かるの?
62 名前:デフォルトの名無しさん [2006/01/29(日) 11:32:42 ] アルゴリズム的
63 名前:デフォルトの名無しさん mailto:sage [2006/01/29(日) 11:56:15 ] C に変換して gcc でコンパイルしてるけど どんなコードになるのかわかりません(⊃д`)
64 名前:デフォルトの名無しさん [2006/01/31(火) 10:05:43 ] もっと議論しろ
65 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 17:59:21 ] そもそも「直感的」という言葉じたいが曖昧で主観的なものだから 議論の土台としてふさわしくない。みたいな?
66 名前:デフォルトの名無しさん [2006/01/31(火) 18:50:26 ] では話題を変えてもよいぞ
67 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 19:31:37 ] 何か聞きたいことがあるなら素直に質問しろよw
68 名前:デフォルトの名無しさん [2006/01/31(火) 20:16:46 ] 取敢えず俺ははすけるの事をまるで知らないので、 このプログラミング言語の良さを自慢して俺をワクワクさせろ。
69 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 21:24:42 ] Haskellの素晴らしさは>>68 みたいな馬鹿には使いこなせないところだ。 どうだ、魅力的だろ。
70 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 21:30:42 ] ぱっと思い付くのはこんなところだな。 ・高級言語の基本的な特徴を備えている。 メモリ操作はほとんど意識する必要がない。全部GC任せにできる。 そもそもGCの存在すら意識しなくてもいいくらいだ。オブジェクトは全部(参照やポインタでなく)値。 関数も値。手続きも値。 ・代数的データ型 「タグつき共用体」とか「バリアント」とか呼ばれる奴だ。 これ一つでstructにもunionにもenumにもなる。萌え。 うまく言えないが、とても素晴らしい。 ・美しい構文 予約語よりも記号を多用した簡潔な構文だ。とくにwhere節(>>5 にもあるように、 ローカル変数を関数本体の後で定義する機能)は手放しがたい。 ・モナド CやPascalのセミコロンを多重定義できる機構だと思ってくれ。文が実行される文脈を定義することができる。 非決定モナドを使えば複数の選択肢から一つを決定するたびに世界の方が分裂する計算を表現できるし、 継続モナドを使えばgotoすらかわいく見える邪悪な制御構造を使うことができる。 誰にも読めないソースをつくり出すには絶好の道具だ。 ・強力な静的型システム 多重定義と総称性(generics)が自然に統合されたそれなりに単純な型システムがある。 特に、型推論があって、こまごまとした指定をせずとも型に頼ったプログラミングができる。 総称的な関数はそうでない関数と同じように書けるし扱える。 ワクワクしたか?したらとっとと勉強しろ。
71 名前:デフォルトの名無しさん [2006/01/31(火) 21:37:53 ] そうだな、なかなかワクワクしてきた。 では俺様に参考書を薦めるがよい。
72 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 21:50:46 ] Haskellは今年中にマスターしてみせる
73 名前:デフォルトの名無しさん mailto:sage [2006/01/31(火) 22:03:37 ] >>71 Haskell: The Craft of Function Programming はとても良い本だが、俺はこれ以外に入門書を読んでいないので比較はできない。他には、 Introduction to Functional Programming using Haskell あるいは、 The Haskell School of Expression が有名なようだ。 webで学ぶなら、Yet Another Haskell Tutorialがほとんど唯一のまとまった入門書だと思う。
74 名前:デフォルトの名無しさん [2006/02/01(水) 22:34:44 ] 限量子使えるバージョンもあるよ0うだが、、、 なんか面白いことできる ∀x∀y ∃z
75 名前:デフォルトの名無しさん mailto:sage [2006/02/01(水) 23:38:33 ] 顔文字にしか見えない → (∀
76 名前:デフォルトの名無しさん [2006/02/13(月) 20:56:42 ] 初心者がHaskellを学ぶのに役立ちそうな文書: www.sampou.org/haskell/a-a-monads/html/index.html www.sampou.org/cgi-bin/haskell.cgi?Programming%3aWayToHaskeller www.sampou.org/haskell/tutorial-j/index.html www.sampou.org/haskell/ipsj/
77 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 01:46:36 ] 役立ちそう、じゃなくて実際にいいか悪いか教えて欲しい。 文書はとにかくあれば何でもおーけーみたいのはちょっと。
78 名前:デフォルトの名無しさん [2006/02/14(火) 03:03:11 ] 2番目は何もわかんない状態で役立つ。 3番目は2番目が半分以上わかるぐらいで役立つ。 4番目はGHCは読めないけどもっと普通のなら読めるぐらいになったら役立つ。 1番目はモナドがわかんない時に役立つ。
79 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 03:23:28 ] スレタイに反して、良スレだな、ここは。
80 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 06:13:50 ] >>78 本当に役立つのかどうか不安なレスだな。 効用: 読んだことに満足する、だったりして。
81 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 06:40:14 ] >>77 俺は>>76 じゃないけど、正直なところ、今日本語で読める文章で Haskellを学び始めるのに適したものはないと思う。 一ヶ月ほどで本が出ると思われるのでそれを待つか、 MLの入門文書を読んで関数型言語に慣れてから「やさしいHaskell入門」を読むのが 近道なんじゃないだろうか。
82 名前:デフォルトの名無しさん [2006/02/14(火) 07:23:10 ] 76だが、>>81 に激しく同意。俺は>>76 の2番目を半分ぐらい読んだ状態。 後はコード読んでHaskellの世界を開拓(Hack)してゆくしかないと思う。
83 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 09:27:48 ] Hackell
84 名前:デフォルトの名無しさん [2006/02/14(火) 09:45:31 ] オライリーから Haskell hacks が出るのはいつの日のことですか
85 名前:デフォルトの名無しさん [2006/02/15(水) 04:54:51 ] >>84 オライリーの中の人にもオナニーと思われてる予感
86 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 04:56:35 ] >>85 そだね。近所なんだからよく相談するようにね。
87 名前:デフォルトの名無しさん [2006/03/05(日) 06:14:03 ] age
88 名前:デフォルトの名無しさん mailto:sage [2006/03/05(日) 06:34:28 ] オライリーとオナニーって似てるよね。
89 名前:デフォルトの名無しさん [2006/03/15(水) 02:08:50 ] >>88 ねーよwwwwww
90 名前:デフォルトの名無しさん mailto:sage [2006/03/15(水) 02:19:03 ] オナイニー
91 名前:http://www.vector.co.jp/soft/win95/util/se072729.html mailto:http://msdn2.microsoft.com/ja-jp/library/h2k70f3s.aspx [2006/03/18(土) 20:17:15 ] TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
92 名前:デフォルトの名無しさん [2006/03/23(木) 17:07:28 ] ハスケル学んでて報われるかな? 10年以内に
93 名前:デフォルトの名無しさん mailto:sage [2006/03/24(金) 12:09:37 ] 言語はNEED TO KNOW
94 名前:デフォルトの名無しさん mailto:sage [2006/03/25(土) 02:30:23 ] 入門本の評判は? 発売ってまだだっけ?
95 名前:デフォルトの名無しさん mailto:sage [2006/03/25(土) 03:53:29 ] >>92 言語を覚えているかどうかなんて些細な問題でしかない。 君が勉強すべきなのは数学だ。 さもなくば、ゲームが作りたいというならAPIやらライブラリやらの仕様書でも読んでろ。
96 名前:デフォルトの名無しさん [2006/03/27(月) 17:42:46 ] 1流の2chブラウザを作ってWindowsからamigaまで制覇するのが夢です。
97 名前:デフォルトの名無しさん mailto:sage [2006/03/27(月) 17:50:35 ] まずは一流と表記することからはじめるか
98 名前:デフォルトの名無しさん mailto:sage [2006/03/27(月) 18:29:53 ] 言語について解説した本がほしい あの三冊ともSICPと同じことやらされて飽きる
99 名前:デフォルトの名無しさん mailto:sage [2006/03/27(月) 19:02:02 ] >>98 そんなあなたにGentle introduction to Haskell
100 名前:デフォルトの名無しさん mailto:sage [2006/03/27(月) 23:49:57 ] これってどないですか? ttp://www.amazon.co.jp/exec/obidos/ASIN/4839919623
101 名前:デフォルトの名無しさん mailto:sage [2006/03/28(火) 00:03:37 ] ↑まだ届いてない
102 名前:デフォルトの名無しさん [2006/03/29(水) 20:13:54 ] Haskell製2chブラウザマダー?
103 名前:デフォルトの名無しさん [2006/04/06(木) 06:05:36 ] Haskellの59%は真空で出来ています Haskellの23%は鍛錬で出来ています Haskellの8%は気の迷いで出来ています Haskellの7%はミスリルで出来ています Haskellの3%は成功の鍵で出来ています 成功の度合いは低い…
104 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 17:10:57 ] それ入門書だよね。ネットに分かりやすいチュートリアルあるのに本買うのはもったいなくないか? プログラミング初めてってんならいいかも知れんけど。
105 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 17:54:21 ] わかりやすいチュートリアルってYAHTのこと?
106 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 18:48:35 ] やさし(くな)いHaskell入門かも
107 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 19:16:47 ] Gentle
108 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 20:09:30 ] 紳士的なHaskell入門
109 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 20:19:15 ] そのうち萌えるHaskell入門とか出てきそうだ。
110 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 10:13:34 ] 応用Haskell入門
111 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 21:07:48 ] 応用は本気で欲しいな。
112 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 21:11:23 ] >>100 読みました。 一言で言うと、トイレットペーパーの方がマシでした。
113 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 21:41:54 ] まあ、理解できなかったらただの紙切れだわな
114 名前:デフォルトの名無しさん mailto:sage [2006/04/12(水) 22:31:00 ] 転職に有利ってことはないんだろうな。
115 名前:デフォルトの名無しさん mailto:sage [2006/04/13(木) 05:00:22 ] >>5 単に名前の付けかたがまずいだけのような... >>8 は分かりやすい。
116 名前:デフォルトの名無しさん mailto:sage [2006/04/13(木) 05:08:36 ] 何でこんなマイナー言語スレ同時進行してんの?
117 名前:デフォルトの名無しさん mailto:sage [2006/04/14(金) 07:05:29 ] 叩きネタが一瞬で尽きたのに誰も削除依頼しないから
118 名前:デフォルトの名無しさん [2006/04/14(金) 16:19:39 ] プログラム言語界を席巻するのは時間の問題だから。
119 名前:デフォルトの名無しさん mailto:sage [2006/04/15(土) 18:06:17 ] 削除依頼しようと思う人がいないほどマイナーだから
120 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 12:50:32 ] どんなに凄くても研究用じゃ実用にならないよな。 いつ根本から変わるかもわからんし。
121 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 14:58:42 ] Haskellはたしかに一番美しいと思うが どの本も最初にエレガントな解を見せておいて 実用的には別解が必要ですと来る。 その解説がものすごく手続き的。
122 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 15:11:27 ] >>121 例えばどんな本?
123 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 16:06:52 ] Haskellの初心者向け本出てたな。 迷わず買ったが、むずくて即挫折です
124 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 20:44:25 ] >>123 MLあたりから始めて遠回りしてみたら?
125 名前:デフォルトの名無しさん [2006/04/20(木) 21:17:08 ] 最強を目指すならばすべからく遠回りせよ
126 名前:デフォルトの名無しさん [2006/04/22(土) 08:52:33 ] はすけらーって延々と議論ばかりやってて一向に動くものを作らなさそう。 現場で役に立たないタイプの典型。
127 名前:デフォルトの名無しさん [2006/04/22(土) 12:00:55 ] 若林 史江さんは、19歳で株を始められたそうです。 www.fumie-w.com/ be-dream.jp/200/05/205_1.php 高校を卒業するまでの私の人生はまさに順風満帆。 そんな時、突然告げられたのが父の会社の倒産。 ようやく私も事の次第がわかってきて、暗い将来を考えると涙が止まらなくて……。 「看護大に行くのはもうあきらめよう」と泣いていると、兄がこう言ってくれたんです。 「夢だった看護師をあきらめなきゃならないのはかわいそうだと思う。 でも、どんな仕事に就こうが、その世界で成功すればいいだけだよ。 ……自分が置かれている分野でトップになれた人が成功者だと思う」 と慰めてくれたんです。 救われましたね〜、この言葉で。 「よし!頑張るしかない。 妹もいるし、家にお金を入れなきゃいけないんだから働こう!」 と気持ちを切り替えることができたんです。 同じ19歳でも、人生いろいろですね。
128 名前:デフォルトの名無しさん mailto:sage [2006/04/22(土) 13:07:19 ] 若林 史江さんの成分解析結果 : 若林 史江さんの36%は夢で出来ています。 若林 史江さんの24%は乙女心で出来ています。 若林 史江さんの14%は毒電波で出来ています。 若林 史江さんの11%は花崗岩で出来ています。 若林 史江さんの8%は鍛錬で出来ています。 若林 史江さんの5%は根性で出来ています。 若林 史江さんの1%は真空で出来ています。 若林 史江さんの1%は株で出来ています。
129 名前:デフォルトの名無しさん mailto:sage [2006/04/22(土) 19:35:40 ] そのコピペシリーズってよく見るけど、何が面白いのかサッパリ分からんのだ。
130 名前:デフォルトの名無しさん mailto:sage [2006/04/22(土) 20:17:16 ] >129 コピペじゃない。 っ【成分解析 カドルコア】
131 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 01:41:05 ] へえ。 占いツール(?)なのか。 ググッたけど、激しく落とす気しねーw
132 名前:デフォルトの名無しさん [2006/04/23(日) 14:00:21 ] 芸人が腰を振りながら変なポーズで叫ぶ新手のネタか何かと思ってたよ。 テレビ見ている人は、その状況が勝手に脳内補完されるから面白い(流行っている)のかな、と。 まあ、俺はテレビ見ないからな。
133 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 19:59:53 ] あなたの生活なんてだれも聞いてません。
134 名前:デフォルトの名無しさん mailto:sage [2006/04/23(日) 20:03:08 ] >>132 最近の芸人はどれもコンセプトは一緒でつまらん。 ちょうど、他人のレポートを写して書き方をちょこっと変えて提出する学生と同じ。
135 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 01:30:25 ] >>134 芸人はバラエティー番組の部品だから。 usefulな部品が同じようなインターフェイスを持つようなもの。
136 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 01:56:51 ] >>135 そういう環境に最適化しちゃったやつは環境の変化になかなかついてこれないから淘汰されるよ。ついてこれるのは変化に対応できたやつだけ。
137 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 09:44:05 ] テレビ屋も視聴者も 今の芸人に移植性なんて期待してないんだよ
138 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 15:33:39 ] それ違う
139 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 22:00:52 ] >はすけらーって延々と議論ばかりやってて一向に動くものを作らなさそう。 >現場で役に立たないタイプの典型。 会社入れば、こういうことを仰る輩の実力が痛い程味わえますね。
140 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 15:03:44 ] >>134 >最近の芸人はどれもコンセプトは一緒でつまらん。 ああ、>>134 も成長したんだな。良かった良かった。 あと一つ教えてやる事があるとすると、 何もそれは「最近」に限ったことではない。 昔から同じ。 単に >>134 が昔の芸人を知らなかっただけ。
141 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 16:58:44 ] 芸人はどうでもいいよ
142 名前:デフォルトの名無しさん [2006/04/30(日) 17:11:43 ] 質問です。 Haskellと芸人のつながりを教えてください。
143 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 17:13:48 ] だからどうでもいいっていってんだろ。
144 名前:デフォルトの名無しさん [2006/04/30(日) 17:19:26 ] >>143 あなたは私ですか? 私が気にしているのに、なぜどうでもいいという答えが出てくるんですか。 まじめに考えなさい。
145 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 17:23:08 ] 黙れ小僧!それが人にものを訊ねる態度か!
146 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 20:50:43 ] 数学的だと美しいの?主観の問題じゃ?
147 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:09:13 ] ククク…混沌こそが美しい
148 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:20:32 ] >>146 数学的つーより、定義を書き下すスタイルが美しいと思う。
149 名前:デフォルトの名無しさん [2006/04/30(日) 21:20:51 ] >>146 時よとまれ!お前は美しい!
150 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:22:49 ] シンプルな計算モデルに基づいてすべてを記述できるのが美しい
151 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:23:27 ] 美しいの計算モデルなのさ!!!
152 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:43:08 ] 妖星は二度と輝かぬ!
153 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 21:55:15 ] わが生涯に一片の副作用なし!
154 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 22:02:19 ] 観察可能な副作用のない人生のなんと矮小なことか。
155 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 22:47:58 ] 無駄がないのが美しく感じる。
156 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:15:42 ] 表面上は副作用無いけど、 ぶっちゃけ実質的には副作用ある。
157 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:24:21 ] 実質的にはあるものを、表面上は無いように見せかけようとしてきたのが プログラミング言語の歴史だ。
158 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:27:52 ] >>157 そのコピペのソースはどこ?
159 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:55:23 ] 副作用に実質も糞もないだろ。 副作用って言葉自体が言語レベルの(表面上の)概念なんだから。
160 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 00:04:13 ] haskellに副作用はありません。 副作用があるとかなんとか、馬鹿が鳴いてるだけですから無視してください。
161 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 02:20:35 ] 確かに main の返す値は常に等しいが・・・。
162 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 16:21:26 ] 宣言的プログラミングってやつとは全然違う?近い?
163 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 18:01:17 ] 違います
164 名前:デフォルトの名無しさん [2006/06/02(金) 19:25:52 ] 諸君、議論したまえ。
165 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 21:16:53 ] >>64 か? そろそろ勉強始めろよ。和書も出たんだし。
166 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 18:55:27 ] Haskellって、アルゴリズムを書くには便利そうだけど、 それだけで完結するようなプログラムもありえないので、 ビジネスロジックだけをこれで書いて、ほかの言語から 呼び出せってモノなんでしょ? もっといえば、ストアドみたいな。
167 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 19:43:52 ] >>166 そういう使いかたもあるけど、そのための言語と言う訳ではない。 宣伝文句は「general purpose programming language」だし、 ライブラリの整備もかなりの部分は「全部Haskellで書く」方向に向かっている。 そもそも、なんでロジック以外を書くにはHaskellは不便だと思うんだ?
168 名前:167 mailto:sage [2006/06/03(土) 19:46:36 ] 自己レス >そもそも、なんでロジック以外を書くにはHaskellは不便だと思うんだ? いや、実際不便なんだが、それは主にライブラリの不備のせいであって、 言語がそっちを指向してる訳じゃないと思うがどうよ。
169 名前:デフォルトの名無しさん [2006/06/03(土) 20:44:04 ] >>165 はーい^^
170 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 00:48:32 ] >168 簡単な解説ページしかみてないので今ひとつ自信はないんだけど、 I/O関係でムリを通そうとしてる雰囲気がほのかに・・・。 そんなんだったら、ほかの言語から呼び出すのにとどめたほうが、 みんな幸せになれそう。 正規表現を拡張して独立したプログラム言語にしようとしてるような、 ミョーな意固地さを感じる・・・。
171 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 01:59:34 ] Haskell.NETで何とかならんかな、その辺は。
172 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 02:13:40 ] Haskell.NETは間違いなくベーパーウェアのまま終わる
173 名前:デフォルトの名無しさん [2006/06/04(日) 16:13:06 ] C++のメソッドに対するconstってあるでしょ。 あれは、オブジェクトの状態を変えないって意味がある(実際はちょっと違うけど) SICPにもあるけど、副作用や参照のせいで出てくるバグ(side-effect bug)も、 結構無視できない。 私の場合だけど、 副作用がある部分と、副作用が無い部分を切り分けられないかと思い 様々な言語を探していたらHaskellとかCleanとか(*)に突き当たった。 そのように見れば、IOモナドで副作用を切り分けるのもそんなに違和感が無いんじゃないかな。 (*)研究用の(実用的でない)言語なら他にもあるみたい。 computing-dictionary.thefreedictionary.com/Euclid
174 名前:デフォルトの名無しさん [2006/06/04(日) 18:11:25 ] はやくおまいら実用的なライブラリこさえてください。
175 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 18:47:20 ] GHCはOpenGL+GLUTがついてるぜ サンプルコードぐぐってやる気なくしたけど
176 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 20:12:00 ] >>170 たぶんIOモナドの事を言ってるんだと思うが、IOをモナドで表すのは どっちかというと言語の詳細であって、それほどプログラミングのスタイルが 影響を受ける訳じゃない。 たとえ内部が正規表現で出来ていようと、その上で普通にコードがかけるなら 問題ないんじゃないだろうか。 という訳で、別に無理をしていても良いと思うんだが、個人的には HaskellのIOがすごく無理をしているようには感じられない。うまく言えないけど。
177 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 20:26:01 ] しかし、純粋関数的に書いていたコードに副作用を加えたい場合、 let x = ...を x <- ... に書き換えたり、 戻り型を a から IO a や State s a に書き換えなければならない事を思うと、 Haskellで書いたプログラムのモジュール性が低いと言えなくもない。 ただ、元々副作用無しで書こうと思っていたコードに、 副作用を加えるというのは、そもそも設計段階で間違っていたとも言える。 ここで言う副作用の例は、性能評価コードや、ロギング等のための、 呼び出しカウント、ファイル出力などを考えている。 でもこういうのは他の代替可能な手段があるかもしれない。 始めからIdモナドで書けばいい、と言ってしまえばそれまでだけど。 この辺の議論ってどっかに書いてないかな。
178 名前:デフォルトの名無しさん [2006/06/12(月) 06:41:11 ] 諸君、さらに議論を続けたまえ。
179 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 07:32:33 ] そうやって話の腰を揉むのはよせ
180 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 07:56:57 ] 俺のおっぱい揉んでよ。
181 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 07:59:16 ] 氏ねデブ
182 名前:デフォルトの名無しさん [2006/06/12(月) 11:30:40 ] 議論を再会したまえ。
183 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 19:07:16 ] お前ら面白すぎ
184 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 14:00:58 ] べつに面白くはないでしょ
185 名前:デフォルトの名無しさん [2006/06/14(水) 21:56:33 ] 議論を展開したまえ。
186 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 22:47:18 ] おっぱいもまれたい男はデブかどうか。 ピザには間違いない。
187 名前:デフォルトの名無しさん [2006/06/17(土) 07:48:34 ] その議論は終了したまえ。
188 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 09:40:35 ] 学者様は議論の開始・展開・終了がノンコストで行われると考えてるらしい。 実際の開発では、プログラムの開始・展開・終了の間で 作業者間でのコミュニケーションが行われ、そこのコストがもっとも大きいというのに。
189 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 13:19:08 ] じゃあトップが一人で全部設計してあとはコーディングだけすれば ノンコストだろ。コミュニケーションにコストがかかるとか言ってる >>188 方がDQNだろ
190 名前:デフォルトの名無しさん [2006/06/17(土) 14:25:09 ] >>187 したまえ
191 名前:デフォルトの名無しさん mailto:sage [2006/06/17(土) 20:41:33 ] >>189 俺にはこのボケに対するうまいツッコミが思いつかない
192 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 09:54:29 ] 今北んだが、何でコミュニケーションのコストの話になったんだ? 誰が学者様なんだ? コミュニケーションにコストがかかるのは承知だが、 なんでそれをHaskellのスレで議論する必要が? もっとテクニカルな話しようや
193 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 10:01:35 ] 俺はテクニックの話はどうでもいい。 研究的内容について議論してくれ。
194 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 11:58:33 ] 研究的内容って?何を求めているの?
195 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 15:41:09 ] >>194 「新規性」だよ
196 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 23:12:56 ] このスレで?w んな高尚なもの求められても。。そういうのは大学のお友達とたっぷり議論するといいよ。
197 名前:デフォルトの名無しさん mailto:sage [2006/06/18(日) 23:15:25 ] 第一こんな所に降りてくるネタなんぞに新規なものなど存在しない。 何かHaskellの新しい機能を触ろう、ってんならagreeだが。
198 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 17:24:47 ] arrowってモナドと何が違うの?
199 名前:デフォルトの名無しさん mailto:sage [2006/06/19(月) 17:34:25 ] やっとアローズまでたどり着いたか。遅かったね。
200 名前:デフォルトの名無しさん [2006/06/19(月) 23:18:19 ] 頭の回転の速さよりもセレンディピティの方が重要だと思う。
201 名前:デフォルトの名無しさん mailto:sage [2006/06/21(水) 01:36:11 ] クソスレでまじめな議論に飢える情報弱者www
202 名前:デフォルトの名無しさん mailto:sage [2006/06/22(木) 06:15:11 ] 新しいものとか、テクニカルなもの、セレンディピティはおおいに結構。 Haskellの超絶技巧なテクニックだとか、こんなアプリをHaskellで書いた!とか、 こんな新しいプログラムの書き方がある!とか そういう内容でいいんじゃないの
203 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 00:00:10 ] >>202 お前このスレ立てただろ。文体からすぐわかんだよ。 自分ひとり選民意識でいるんじゃねぇよ。 ↓↓↓ プログラム板から来ました pc8.2ch.net/test/read.cgi/php/1150778053/
204 名前:デフォルトの名無しさん [2006/06/24(土) 15:40:43 ] 議論をレジュームしたまえ。
205 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 21:48:43 ] Haskell使える人ってこれからどんどん増えて行くというのに、選民もクソもないでしょ。
206 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 01:51:37 ] Haskellは流行りません。研究者の一人として断言します。
207 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 02:26:49 ] >>206 理由をぜひ聞きたかったりするんだが…。 これから勉強しようかと思ってるけど、ひょっとして無駄?
208 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 06:23:53 ] >>207 自分の「ものの考え方」のバリエーションが広がるだけでも 全く無駄ではないよ
209 名前:207 mailto:sage [2006/06/28(水) 08:35:59 ] >>208 あっ、いや、ある程度はもう知ってるのだけど、 Haskellは実用的にも使えるのではないかと思って 標準的な関数の使い方を全て勉強しようかという 矢先に >>206 を見たので…。
210 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 17:52:27 ] Haskell は面白いけど、あんまり実用的ではないように見えるなあ。 それほど効率が求められないものや、 あるいはそれほど効率に影響のないプログラムなら問題ないけど、 効率上、副作用は必要悪だと思うなあ。
211 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 18:10:21 ] Haskellが遅いのは遅延評価のせいであって、副作用は関係ないだろ。
212 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:24:57 ] 別に商用になるかどうかと流行るかどうかは関係ないでしょ。 書籍も出たことだし、Smalltalkやlisp/schemeに迫る程度には「流行る」かと。 あまり理由も示さずに間抜けな断言をするのは研究者としてどうなんだろう。 あと、副作用があれば参照が使えるので例えば再帰の代わりにforループが書ける。 Cみたいなクイックソートが書ける。副作用は、Haskell自体の遅さというより、 効率的なプログラムが書けるかどうかに掛かってくる、ということを>>210 は言いたかったんでは。
213 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:33:02 ] 「Haskellは流行りません」って、Haskellを知らずに言ってるならただの馬鹿だし、 Haskellの利点を踏まえた上でそんなことを軽々しく断言されても…ちょっとアレな人な気がする どこの馬の骨ともわからん(プログラミング言語の?)研究者が何と言おうと、流行るもんは流行るし。
214 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 23:55:56 ] 俺も馬の骨だが、Haskell は一般向けには流行らないと思うなぁ。 そもそも流行っている事が最も重要な人は使っていないんじゃないかな。
215 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 00:12:06 ] 流行らないと「思う」には同意。ただ断言できるほど物を知らないorz >そもそも流行っている事が最も重要な人は使っていない これの日本語的な意味がわからん。読めん。
216 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 01:13:18 ] 「はやっている == もっとも じゅうようなこと」だと かんがえる ひとは つかっていないんじゃないかな。
217 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 02:45:50 ] 絶対流行らない。 仕様を理解してもらえないと思う。
218 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 03:20:34 ] でもさ、むかし、Lispすげー流行ったじゃん?
219 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 05:28:17 ] >>212 forループと(効率的に)同等なものは破壊的代入を使わなくても書ける。 Haskellでも破壊的クイックソートは書ける。 リストに対しては書けないけど、これはむしろ当然だろう。 副作用があることと、代入スタイルのプログラミングができることを混同しているように見える。 「必要悪」とされるべきは代入スタイルのプログラミング。 Haskellには副作用は無いけど、代入スタイルのプログラミングをサポートしているから、 これをHaskellが遅い理由にするのはおかしい。
220 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 05:52:08 ] 便乗質問で申し訳ないんですが、 100MB を超えるような巨大配列を取り扱うような 科学技術計算でも大丈夫ですか? 参照透明性ということで、配列要素を一部分変更するたび毎に 配列の全コピーし直してるのかと思っているのですが大きな誤解ですか? どうしても副作用のあるコードを書きたくなってしまいます。
221 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 06:12:19 ] >>220 Haskellの配列は二系統あって、一つが変更毎に完全なコピーを作るIArrayインタフェースで、 もう一つがコピーなしで破壊的操作ができる代わりにモナドを通した操作しか認めないMArrayインタフェース。 だから、この点に関しては問題ない。科学技術計算をする上で他に障害が無いかは保障しかねるけど。
222 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 06:40:16 ] >>221 MArray インターフェースですか。 そういうのが有ったんですね。それで勇気が出ました。とっても重要な情報です。 多分、他には根源的な支障はないと思います。 あともう一つ高速化手法として 最近流行の並列プログラミングもしたいのですが、 こっちは Haskell ではまだまだの段階なのかな?と勝手に思っています。
223 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 08:38:35 ] >副作用があることと、代入スタイルのプログラミングができることを混同しているように見える。 IORef等への参照セルへの代入は「副作用」として知られていますが何か? 少なくとも空間効率を意識したプログラミングは副作用がないとできない。と思う。 時間効率についてはオーダーの議論で逃げればいいけど。
224 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 08:43:28 ] >絶対流行らない。 >仕様を理解してもらえないと思う。 C++のバッドノウハウ集や、Javaの複雑なgenericsを理解できるなら、 Haskellの多相型や型クラスを理解するのはそう難しくはないでしょ。 GoFのVisitorやMementoパターンが理解できるなら、高階関数を使いこなすのも特に問題ないかと。 どれも一時期流行したもの。 Haskellが凡人に理解できないと思うのは、それこそ選民意識じゃない?
225 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 09:11:42 ] >IORef等への参照セルへの代入は「副作用」として知られていますが何か? 言葉遣いの問題だが、副作用ってのは「関数適用や式の評価に際して計算以外のことを行うこと」 であって、IORefの操作はこの定義に当てはまらないので副作用とはいえないと思う。 そのためにわざわざ「代入的プログラミング」という言い方をしたんだが。 >少なくとも空間効率を意識したプログラミングは副作用がないとできない。と思う。 >時間効率についてはオーダーの議論で逃げればいいけど。 言葉の問題を除いて、同意。
226 名前:デフォルトの名無しさん mailto:sage [2006/06/29(木) 15:06:19 ] IORef とかって、IORef とかを取り除く時にコピーが発生するんじゃないの?
227 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 01:40:42 ] でもまあ、Haskellで科学技術計算なんてCに比べると10倍以上遅いんで、 する気にならないですけどね。
228 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 05:45:34 ] >>227 あ〜。いいんですよ。とりあえず速度は。 最終的にどんな感じのプログラムになるか実際に見てみたいんですから。 それに計算対象や入力によって速度をそれほど気にしない場合もありますし。
229 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 08:10:05 ] C言語でカリカリにチューニングした速い実装を書いて、 Haskellでさくっとかいた実装の出力と比較して検算する (Nバージョンプログラミング) というのはアリかもしれないね。
230 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 08:26:59 ] >言葉遣いの問題だが、副作用ってのは「関数適用や式の評価に際して計算以外のことを行うこと」 であって、 わざわざ反論するのも面倒だけど、言葉使いの話をするならば、反論させてもらう。 何度も書くが、副作用(side effect)ってのはIORefへの代入も含むと一般に考えられている。 例えばSICPで、Schemeに代入の機能を入れる所で、side effect bugという言葉が出てくるし、 何より IORefを扱うモナド IOモナドは「副作用」を扱うモナドじゃないか。 IOモナドやState使わないと代入は純粋関数的に書けないでしょ。 適当にぐぐっただけでも(Cleanのマニュアルだが) sky.zero.ad.jp/ 〜zaa54437/programming/concepts/index3.htm#a6 >代入は、純粋な関数型言語では排除されている。というのも、代入演算子は副作用(side effect)を >伴う為、参照透明性(referential transparency)が破壊されてしまうからである。 「狭義の副作用」という言葉があるのかどうかは知らないが、一般には代入も副作用と考えられている。
231 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 09:46:16 ] >>230 誤解を招く言い方だったが、俺が指摘したかったのはそこじゃない。 >何より IORefを扱うモナド IOモナドは「副作用」を扱うモナドじゃないか。 違う。「入出力」を「副作用なしで」扱うモナドだ。 ここで言う「入出力」にはIORefの操作なんかも含める。 なんでこの区別にこだわるかというと、 ・>>210 は「Haskellに副作用が無い」という前提で話している。 だから少なくともこの文脈ではHaskellのIOを副作用と呼ぶのは不適切。 ・unsafePerformIOなどによって導入される本物の副作用との区別ができたほうが良い。 という理由から。
232 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 12:27:10 ] ああ、言いたいことは分かったよ。 IOモナドは副作用を陽に扱わない。 Haskellは、副作用を表現するIOモナドを純粋関数的に「繋いで」、mainとして定義するスタイル。 繋いだアクションが逐次実行されることで、実行形式は副作用を伴うプログラムとして動作する。 一方、unsafePerformIO はIOモナドとは違い、Haskellの遅延評価のステップの途中で 本当に「副作用的に」評価される(純粋関数の枠を壊している)。 それを言いたいのは分かった。 >・>>210 は「Haskellに副作用が無い」という前提で話している。 > だから少なくともこの文脈ではHaskellのIOを副作用と呼ぶのは不適切。 どうしてその前提が読み取れるのか分からんけど。 というか明らかに IOモナドを副作用を扱うモナドでそ。unsafePerformIOと区別したいのは分かったが。 Haskellで副作用を表現できることはもはや常識なわけで、 「Haskellは副作用を(表面上)追い出した為にIOモナドというややこしい形でしか扱えない。しかし副作用は効率的なプログラムを扱う上で必要悪だよな。もっと簡単にならんのか?」 という風に読んだ。
233 名前:とおりすがり mailto:sage [2006/06/30(金) 22:38:41 ] ・形式的にはHaskellのソースコードの中に副作用を伴う要素は無いものとみなせる。 ・副作用をいわば「ランタイム側に追い出す」ための仕組みがIOモナド。 そういう意味でIOは副作用を扱っているといえる。 (・でも本当に副作用を持つ禁断の関数も実はある。) ってことでFA? 状態機械の仕様をフローチャート的にではなく構成的に 定義できるのってキモチイイな do構文使ってると普通の逐次処理言語とあまり変わらないけど。 まあ気分の問題で。
234 名前:デフォルトの名無しさん mailto:sage [2006/06/30(金) 23:03:53 ] >do構文使ってると普通の逐次処理言語とあまり変わらないけど。 そう。というかlet文も考えようによっては逐次型っぽい。 for文やwhile文がなくて、オブジェクトのアップデートができない事を除けば、 手続き型言語も関数型言語もそんなに変わらない。 更にHaskellは純粋関数的なので順序を気にしなくていいんだけどね。
235 名前:とおりすがり1 mailto:sage [2006/06/30(金) 23:52:32 ] fib = 1:1:zipWith (+) fib (tail fib) = 1:1:2:3:5:8:12 .... これはおなじみHaskell版フィボナッチ数列 遅延評価の例として一度はお目にかかるという。 これはリストのある要素の値を 遅延評価を利用して 同じリストの手前の要素から構成しているのがミソ。 #解説は「フィボナッチ Haskell」 でググるといっぱいでてくるので略
236 名前:とおりすがり2 mailto:sage [2006/06/30(金) 23:55:06 ] で話かわってmain関数の値の話。 これって要するに最終的には main = (IO a) >>= (IO b) >>= (IO c) >>= (IO d) ...... というふうに(IO x)を>>=でつないだ数珠繋がりに簡約されるわけで。 (IO x)中にはキー入力とか、画面出力とか、メモリの上書きとか 逐次処理言語の命令コードやサブルーチンのようなものが詰まってる。 >>232 とかで言ってるアクションてやつ ちなみに(return x)で作った(IO x)はNOP(何もしない)が入ってるとみなす。
237 名前:とおりすがり3 mailto:sage [2006/06/30(金) 23:59:14 ] >>236 のミソは ループや分岐に相当する(IO x)は無いってこと。 なぜそれでこまらないのかというと、 フィボナッチ数列のときに ある要素を決定するのにそれより前の要素の値を利用したように 条件分岐で次の処理として(IO y)を繋げようか(IO z)を繋げようか決めるのに それより前の(IO x)の値をみて決める事ができるから。 あるいはそこで打ち切ってプログラムを終了してもいい。 つまり、Haskellで副作用のあるプログラムを書くってことは フィボナッチ数列を定義するように コマンド列を定義しているようなもの
238 名前:とおりすがり4 mailto:sage [2006/07/01(土) 00:03:08 ] とまあ そういう風にオイラは理解したわけです。
239 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 06:11:52 ] 合ってると思うっす。
240 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 06:30:18 ] >>232 >どうしてその前提が読み取れるのか分からんけど。 >「Haskellは副作用を(表面上)追い出した為にIOモナドというややこしい形でしか扱えない。しかし副作用は効率的なプログラムを扱う上で必要悪だよな。もっと簡単にならんのか?」 >という風に読んだ。 そう読めるのに気付かなかった。 入出力のことを副作用と呼んでるようだが、副作用とは式の簡約の過程で入出力を行うことであって、 入出力そのもののことではないだろ。 それとも、「副作用」という言葉をそういう意味で使うことを支持する典拠があったりするのか? 多くの言語では、入出力を扱う唯一の方法が副作用なわけで、入出力と副作用を混同してもさして問題はないだろうが、 そうでない言語(たとえばHaskellやClean)の話をするときはちゃんと区別して話したほうが良いと思う。 >というか明らかに IOモナドを副作用を扱うモナドでそ。 >>231 に書いたように「副作用なしで」IOを扱うためのモナド、とするのが普通だと思う。 How to declare an imperativeから引用 >This section relates the monad approach to input-output to four other widely used >approaches: synchronised streams, as used in earlier versions of Haskell; continua- >tions, as used in Hope; linear types, as used in Clean; and side effects, as used in >SML.
241 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 08:52:27 ] 手続き型言語の代入でも、裏で全メモリの値を渡してると考えれば副作用ではないな
242 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 00:07:46 ] >そうでない言語(たとえばHaskellやClean)の話をするときはちゃんと区別して話したほうが良いと思う。 なるほど、完全に同意しましたです。すまない。 更に How to declare an imperative の文がとてもわかりやすい。ありがとう。 入出力、といえば副作用と思っていたけど、同期ストリームもそうだよな。 自分ではhGetContentsくらいしか使わないけど。 linear typeで入出力ができるのもCleanのマニュアルの序章で分かる(world as value)。 しかし。。。continuationでどうやって入出力するのか?? >それとも、「副作用」という言葉をそういう意味で使うことを支持する典拠があったりするのか? あなたが言うように、副作用と入出力を混同していた。典拠はない。
243 名前:242 mailto:sage [2006/07/02(日) 00:15:21 ] 誤解を招くと悪いので少し書くと、hGetContents自体の型は Handle -> IO StringなのでIOモナド。 ただ、hGetContentsから得たStringは遅延評価の度にファイルやネットワークデバイスから読み出される。 (データがなければブロックする) この「遅延読みString」を処理する部分は旧来のストリーム・プログラミングっぽい(よね?
244 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 22:15:48 ] C言語だと言語仕様として再帰は32回までしか保証しない(だっけ)とかだから、 再帰による33回目の関数呼び出しとそうでない呼び出しで意味が大きく変わってくる。
245 名前:デフォルトの名無しさん [2006/07/06(木) 23:06:29 ] >>244 うそつけ。Cの仕様書にそんなこと書いてないぞ。
246 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 04:38:43 ] 何かそういう類いのあった気がするよ。 for のネストの回数とか意外なものに、 最低保証回数が仕様として決められている。
247 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 06:46:28 ] つ[5.2.4 Environmental limits] だが、再帰回数はない。
248 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 08:25:32 ] そうなのか。
249 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 08:32:38 ] >>244 少し考えれば、再帰を32回まで完全保証する事が不可能だって分かるだろ。
250 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 09:19:47 ] へ?不可能なの?スタックさえ確保しておけばいいんじゃねーの?
251 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 09:22:30 ] >>249 ああ、確かにそうだな。
252 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 01:07:02 ] >>250 ローカル変数がスタックに取得される仕様だと 消費されるスタックの量が予測できないだろ。 ローカル変数と配列の最大数×配列サイズの制限?から再帰の 最大数を決めてもあまり意味があるとも思えない。 ローカル変数をスタックに取らないといけない決まりも無いけど ほとんどの実装で受け入れられないモノを標準仕様を するわけにはいかなかったんだろう。 ってスレ違いごめん
253 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 20:45:30 ] ローカル変数のスタック上のサイズは固定でしょ。言語にもよるけどCやC++ならそう。 そんなことも分からんやつしか居ないの?
254 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 21:39:50 ] もっと優しく言ってくれ
255 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 21:49:20 ] おれにはツンデレでお願い
256 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 22:30:35 ] し、Cの言語仕様にスタックなんて概念は規定されてないんだからねっ!
257 名前:デフォルトの名無しさん mailto:sage [2006/07/09(日) 22:34:52 ] >>244-256 スレ違いの議論はこの辺で終了して下さい
258 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 00:31:31 ] >>253 だからその固定の変数を最大いくつ宣言できるか判らないでしょ
259 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 02:01:36 ] さらにC99だとスタック上の配列のサイズは実行時に決定できる。 すれ違いなのでこの辺までにしとこう。
260 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 06:35:50 ] >>259 >>256
261 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 12:53:18 ] >>259 偉そうに大嘘で締めないように。無能はしゃしゃり出ちゃいやん。 ま、スレ違いだからやめとくか。
262 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 13:38:02 ] ここは一応 Haskell 本スレじゃないから、 少々脱線した所でどうでもいい気もするけどね。
263 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 13:52:49 ] 少々なら良いけど3日も続くとね…。 面白い話でもないしw
264 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 22:01:26 ] >>260 細かいな。記憶クラスが auto の配列って言えばいいのか? >>261 C99のマニュアル読んでね。
265 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 22:17:04 ] げ。知らなかった。 int a[hoge()]; なんてやっても動くじゃん。 いままで関数内で捨てちゃう配列にmalloc使っていたのは無駄だったのか。 HaskellとRubyばっかり使っていたせいで、Cはメモリ管理がめんどくさい言語 だとばかり思っててちゃんと調べてなかった。
266 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 22:31:16 ] C99 じゃないと無理だけどな。
267 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 22:34:35 ] Cは99なのにHaskellはまだ98なのかー
268 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 22:46:53 ] >>264 しかしそう言い直した途端にスタックの話じゃなくなる罠。 いつまでもひきずってもつまらんので、Haskellの豆知識でも。 GHCでコンパイルされたプログラムがスタックをどのように使うかはわかりにくい。 再帰呼び出しでスタックが深くなっているようにも見えないのにオーバーフローを起こしたりする。 これは、スタックの消費が、呼び出しの深さではなく正格な関数の適用のネストの深さに比例するためだ。 例えばg x = x + 1 - 1 + 1 - ..たくさん.. - 1という関数を定義すると、呼び出しの深さは一であるにも関わらず スタックを大量に消費する。正格な関数である(+)と(-)の適用が深くネストされているからである。
269 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 09:42:39 ] スタックが足りなくなったら適当に評価を行って遅延してるのを減らすとか できないの?
270 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 11:27:31 ] >>264 嘘を拡大するためだけに前言撤回で復活しなくてよろしい。
271 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 19:11:00 ] >>269 未評価の式はヒープに保存されているので、それ自身はスタックを消費しない。 スタックが溢れるのは式を評価しようとしたとき。
272 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 00:15:50 ] >>271 スタックあふれた時はヒープ上にスタックを移動して計算したりできないの?
273 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 01:15:45 ] >>272 なんで俺らがそこまでしなきゃいけないわけ?お前何か勘違いしてない?
274 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 01:28:55 ] スタックが溢れそうなのにヒープに余裕があるなどと思ってる素人はモノ喋んな。
275 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 03:16:34 ] ・・・
276 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 11:25:17 ] 頭が良くない人ほどすぐ怒る
277 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 17:56:55 ] >274は50年前の世界からやってきた時空の旅人
278 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 19:52:26 ] >>277 ♪ぼくらは たびびと ときの たびびと♪
279 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 04:35:58 ] Haskellは、お利口さんに見られたいけど誰もそう見てくれない 哀れな人たちの嫉妬を一身に買って出てるよね。
280 名前:デフォルトの名無しさん mailto:sage [2006/07/16(日) 14:04:58 ] 嫉妬というか、そういう奴らがすがるための言語。 知的な奴は、そういうことを考えずに自己拡張しまくりのLispを使う。
281 名前:デフォルトの名無しさん [2006/07/18(火) 13:14:51 ] 諸君議論しているかね?
282 名前:デフォルトの名無しさん [2006/07/19(水) 01:50:46 ] Haskell 面白そうなので調べていたら、Clean にたどり着いた。 両方とも、ちょっとしか解ってないが、現時点ではClean の方が良さげに思える。 でも、一般的にはHaskell の方が流行ってるみたい…。 なぜなんでしょう? Haskell の方が良い!という人の意見が聞きたいです。
283 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 02:56:48 ] ttp://groups.google.com.au/group/comp.lang.functional/msg/c09cb40a66558a19 個人的にはCleanって閉鎖的な印象を受けるからHaskellに流れてるだけ。 どっちも元はMirandaだからCommon LispとSchemeくらいにしか違わないんじゃないの?と ろくすっぽCleanを知らないで書いてみる。
284 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 03:02:04 ] ま、素人はそう考えるわな。
285 名前:デフォルトの名無しさん [2006/07/19(水) 03:58:51 ] 最新ニュース 【教育】国際数学オリンピック 中国が全員金メダルで3年連続世界1位 2位ロシア、3位韓国 日本は7位も過去最高成績 1 :ネットナンパ師φ ★ :2006/07/19(水) 02:23:23 ID:???0 news.searchina.ne.jp/disp.cgi?y=2006&d=0718&f=national_0718_002.shtml imo2006.dmfa.si/results.html によると、順位は 1中国 2ロシア 3韓国 4ドイツ 5アメリカ 6ルーマニア 7日本 8イラン 9モルドバ 10台湾 11ポーランド 12イタリア 13ベトナム 14香港 15カナダ 16タイ 17ハンガリー 18スロバキア 19トルコ 20イギリス 【ニュー速+】news19.2ch.net/test/read.cgi/newsplus/1153243403/ (以下参考情報) インド人は、あんだけ人間いて夏季オリンピックで銅1個しか取れない劣等民族。 自慢の理系でも数学オリンピックは毎年中国が優勝。アメリカが2位。この2国が指定席で、インドなんてランク外。 ja.wikipedia.org/wiki/%E5%9B%BD%E9%9A%9B%E6%95%B0%E5%AD%A6%E3%82%AA%E3%83%AA%E3%83%B3%E3%83%94%E3%83%83%E3%82%AF 数学オリンピックの日本の輝かしい成績 1995年:1位-中国、2位-ルーマニア、3位-ロシア、4位−ベトナム、5位-ハンガリー 1996年:1位-ルーマニア、2位-アメリカ、3位-ハンガリー、4位-ロシア、5位-イギリス 1997年:1位-中国、2位-ハンガリー、3位-イラン、4位-ロシア、アメリカ 1998年:1位-イラン、2位-ブルガリア、3位-アメリカ、ハンガリー、5位-台湾 1999年:1位-中国・ロシア、3位-ベトナム、4位-ルーマニア、5位-ブルガリア 2000年:1位-中国、2位-ロシア、3位-アメリカ、4位-韓国、5位-ブルガリア、ベトナム 2001年:1位-中国、2位-アメリカ、ロシア、4位-ブルガリア、韓国 2002年:1位-中国、2位-ロシア、3位-アメリカ、4位-ブルガリア、5位-ベトナム 2003年:1位-ブルガリア、2位-中国、3位-アメリカ、4位-ベトナム、5位-ロシア 2004年:1位-中国、2位-アメリカ、3位-ロシア、4位-ベトナム、5位-ブルガリア 2005年:1位-中国、2位-アメリカ、3位-ロシア、4位-イラン、5位-韓国 なお参加資格は高校生までです。今すぐではなく次世代、次次世代に効いて来るものです。 それが教育の深さ、恐ろしさ。
286 名前:デフォルトの名無しさん [2006/07/19(水) 05:09:41 ] みなさんやっぱり頭がいいんですね。
287 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 05:20:57 ] >>285 数学オリンピックでは中国とか凄いんだけどねえ。 なぜか欧米の方が偉大な数学者は多いよね。 インドだってラマヌジャンっていう大天才がいたし。
288 名前:デフォルトの名無しさん [2006/07/19(水) 10:28:12 ] だって数学オリンピックって数時間で処理できるような、簡単な問題を いかに処理しきるかっていう官僚的作業だろ? それでも俺には逆立しても解けないが。 ノーベル賞フィールズ賞取る様な何年もかけて倒す仕事とはスケールが違い過ぎるから 1kmレースを3速ギアでトップで駆け抜けたからといって そのマシンが300kmレースを6・7速ギアでトップでゴールできるわけじゃない。
289 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 10:57:38 ] >> 284 非素人の見解披露希望。
290 名前:282 [2006/07/20(木) 02:58:24 ] >>283 英語、苦手でして…。 単語を拾い読みしてみましたが、Haskell は研究用で Clean は実用言語という所でしょうか? >>284 ぜひ、具体的意見をお聞かせ下さい。
291 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 20:36:18 ] Cleanは実行速度速いよ メモリも食わない Haskellは遅い
292 名前:デフォルトの名無しさん [2006/07/21(金) 00:42:59 ] Cleanで echo 'main = readFile "b.txt" >>= putStr . show . (\x->x*x*x) . read'> c.hs && echo 4 > b.txt && runghc.exe c.hs これと同じことやってみ。
293 名前:デフォルトの名無しさん [2006/07/21(金) 09:36:40 ] >>288 は、数学オリンピックについて何も知らない。
294 名前:デフォルトの名無しさん [2006/07/21(金) 09:39:46 ] Microsoftが開発中の新しいシェル「Windows PowerShell」は、RC1版以前は 「Microsoft Command Shell(開発コード名:Monad)」という名称が付けられていた。
295 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 09:48:28 ] 英語が苦手だとHaskellやCleanの新しい機能をすぐに使えないので楽しさ半減だろうと思う。 nobsunみたいに和訳してくれる人は普通とても少ないし。
296 名前:282 [2006/07/22(土) 03:36:21 ] >>292 なる程、Haskell の利点としては @スクリプト言語的な使い方ができる AIOモナドだと簡潔に書ける といった所でしょうか。 @の使い方は面白いかもしれませんね。 Aはどうなんでしょう? エラー処理とかを考慮したプログラムも簡潔に書けるのでしょうか?
297 名前:282 mailto:sage [2006/07/22(土) 03:38:17 ] >>295 今の所、基本的な事を覚えるだけで、アップアップですw
298 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 05:01:32 ] Haskell 関数型言語のスタンダードという役割を担うために作られた言語。 だから、関わっている人が多いし、ライブラリも多い。 Clean 関わっている人が少なく、ライブラリも少ない。 異端であるがゆえに、最新の話題がCleanから出てくることはほとんどない。 という違いもある。 勉強目的ならHaskellだな。 Haskellといえばモナドだけど、Cleanでも同じようなロジックで書ける。 両者の違いは構文糖衣的な違いで、中身は似たようなもの。 Cleanで書くと、たらい回す変数を山のように書いて、文字数が2倍ぐらいになる。 Haskellはプログラムが美しい、Cleanは実行速度が速い、と言える。
299 名前:デフォルトの名無しさん [2006/07/23(日) 00:13:15 ] もっと最適化しろよハスクル
300 名前:デフォルトの名無しさん [2006/07/23(日) 00:15:44 ] カレー食いたくなった
301 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 00:52:36 ] コンパイル時間をもっと短くしろよハスクル
302 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 01:34:55 ] あらいぐまハスクル
303 名前:282 mailto:sage [2006/07/23(日) 02:53:12 ] >>298 なるほど…。 なぜ、Haskell の方が一般的なのか、解ったような気がします。 ありがとうございました。
304 名前:デフォルトの名無しさん mailto:sage [2006/07/30(日) 10:30:01 ] ヒアドキュメント無いんだったらクソ認定
305 名前:デフォルトの名無しさん mailto:sage [2006/07/30(日) 10:58:56 ] 確かに欠陥だ。 次版で入らんかな。
306 名前:デフォルトの名無しさん [2006/07/31(月) 18:40:18 ] 自己記述してるからコンパイラが低速なんだろ?
307 名前:デフォルトの名無しさん [2006/08/02(水) 17:42:50 ] 諸君議論したまえ
308 名前:デフォルトの名無しさん [2006/08/03(木) 20:24:15 ] 諸君怠けてはいないか?
309 名前:デフォルトの名無しさん [2006/08/04(金) 16:48:43 ] 諸君夏休みかね
310 名前:デフォルトの名無しさん mailto:sage [2006/08/05(土) 13:39:27 ] 本物のプログラマはHaskellを使う itpro.nikkeibp.co.jp/article/COLUMN/20060801/244812/ 記事のタイトル、センス無い
311 名前:デフォルトの名無しさん mailto:sage [2006/08/05(土) 15:42:44 ] > 最後にこの連載のタイトルの由来を紹介しておきましょう。 > 「本物のプログラマはHaskellを使う」というタイトルは > 「本物のプログラマはFORTRANを使う」や「本物のプログラマはPascalを使わない」 > といった有名なフレーズをもじったものです。 って書いてあるじゃんか。自分が知らない読んでない理解できないからって 不当に他人を卑しめるのは止めような。
312 名前:デフォルトの名無しさん mailto:sage [2006/08/05(土) 16:30:56 ] そういうもじりが安直だって言ってんじゃないの?
313 名前:デフォルトの名無しさん mailto:sage [2006/08/05(土) 16:53:19 ] そんなに悪いとは思わないけどな… 「本物のプログラマはHaskellを使わない」のほうがしっくりくると言われればそうかもしれないが。
314 名前:デフォルトの名無しさん mailto:sage [2006/08/05(土) 17:45:17 ] 「本物のプログラマはPascalを使わない」で語られる本物は、 決してHaskellなどという"軟弱な"言語なぞ使わんと思うんだが?
315 名前:デフォルトの名無しさん mailto:sage [2006/08/05(土) 20:09:59 ] 310のリンク先の情報処理学会のページ、おもろいな まだ少ししか読めてないけど
316 名前:デフォルトの名無しさん mailto:sage [2006/08/05(土) 20:33:27 ] 本物のプログラマはPASCALを使わない 参考 ja.wikipedia.org/wiki/%E6%9C%AC%E7%89%A9%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC%E3%81%AF%E3%83%91%E3%82%B9%E3%82%AB%E3%83%AB%E3%82%92%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84 www.genpaku.org/realprogrammerj.html
317 名前:デフォルトの名無しさん mailto:sage [2006/08/06(日) 00:46:32 ] この人のサイトが痛いのは本人の趣味嗜好の問題だから放っておくとして、 一昔前のgauche-devel-jpでのshiroタンとのやりとりを見る限りコンピュータの アーキテクチャの根本が理解できていない人としか思えなかったんだが。 まぁHaskellと戯れているうちはデータがメモリ上でどう表現されているかなんて 知らなくても生きていけるってことかな。
318 名前:デフォルトの名無しさん mailto:sage [2006/08/06(日) 01:08:00 ] ハードに近いことは良くわかってないけど何となくプログラミングできている、ってのは文系出プログラマの得意技。
319 名前:デフォルトの名無しさん mailto:sage [2006/08/06(日) 09:28:30 ] Haskellの美しさにあてられら未熟な若者だ。 優しく見守ってやれ。
320 名前:デフォルトの名無しさん mailto:sage [2006/08/06(日) 16:03:48 ] >>317 似た名前だと思っていたら、あれと同一人物なのかよ……。
321 名前:デフォルトの名無しさん mailto:sage [2006/08/07(月) 00:56:53 ] 同一人物、なんだろうねぇ…。 偶然一致するようなハンドル名なのかどうか判断できないから確証はないけど。 未踏にも顔出してたと思ったけど、どんな成果だったのかな。
322 名前:デフォルトの名無しさん mailto:sage [2006/08/09(水) 18:27:04 ] 何これ? あわててブラウザを閉じたぜ。 ttp://page.freett.com/shelarcy/
323 名前:デフォルトの名無しさん [2006/08/10(木) 09:03:14 ] だれかヒアドキュメントの機能をcommitしてきてください。
324 名前:デフォルトの名無しさん [2006/08/10(木) 18:39:34 ] グラスゴウスケールって医療用語であるけど グラスゴウハスケルと似てるね
325 名前:デフォルトの名無しさん mailto:sage [2006/08/11(金) 01:41:09 ] >>324 うわぁっ、すごぉっ、すげぇー!って、日常用語にあるけど、 グラスゴウスケールと似てるね。
326 名前:デフォルトの名無しさん [2006/08/11(金) 07:51:06 ] ということは うわぁっ、すごぉっ、すげぇー! と グラスゴウハスケルは似てるわけか
327 名前:デフォルトの名無しさん mailto:sage [2006/08/16(水) 20:04:53 ] 問1 「うわぁっ、すごぉっ、すげぇー!」を使って 長文を作りなさい
328 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 05:51:34 ] それを見て、あるいは、変なものだ。うわぁっ、すごぉっ、すげぇー! むやが及ん、すべてが、と思った。うわぁっ、すごぉっ、すげぇー! 不要なら、それが、それを出してきたところでもないのなのだ。うわぁっ、すごぉっ、すげぇー! まだ比べできて、この本にもある。うわぁっ、すごぉっ、すげぇー! すでに、人を手をするのを出している、バカな気が、この本のせいと、一歩だと思うんだ。うわぁっ、すごぉっ、すげぇー! 0001200-ROM人は、もう一つの問題になるので、ついにこれには、ホントには、下の時代にはその時のせいをつくるなものを読んでいるのも、それはそれを92020202/1創作連中所持とかの時代にもある。うわぁっ、すごぉっ、すげぇー! あるいは物語もあった。うわぁっ、すごぉっ、すげぇー! なお、その号のこともずっとさておきけれど、感じ。うわぁっ、すごぉっ、すげぇー! プロットをすると、という感じ。うわぁっ、すごぉっ、すげぇー! で、すでにシャープに、ほとんど無節操ないのかな。うわぁっ、すごぉっ、すげぇー! 短距離では、その戦時のお解釈年前の大解決冷や汗指標はほとんど開かかとかを手をもらった芸ばかり。うわぁっ、すごぉっ、すげぇー!
329 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 10:12:37 ] ちょwww
330 名前:デフォルトの名無しさん mailto:sage [2006/08/17(木) 22:03:17 ] >>328 日本語による近代美術だ
331 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 17:06:46 ] 解読できたらごほうびをあげるわ
332 名前:デフォルトの名無しさん [2006/08/19(土) 05:42:40 ] 諸君そろそろ議論に戻りたまえ。
333 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 20:21:49 ] |┃三 _________ |┃ / |┃ ≡ _、_ < 話は全部聞かせて貰ったぞ! ____.|ミ\___( <_,` ) _ \ |┃=___ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |┃ ≡ ) 人 \ ガラッ
334 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 11:24:42 ] 入門Haskellの1章目で既に挫折しそうなわけだが。 やはり、アホな俺にはjavaが似合ってるのかもしれん。
335 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 12:05:04 ] >>334 一章からわりと技巧的なことをやっているので無理もないと思う。 とにかく慣れが重要なので、サンプルコードをコピペしていじりながら 慣れるのが良いんじゃないか。 意味の分からないところは2chで聞けばいいし。
336 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 14:42:25 ] >>335 アドバイスありがと。 とにかく触りながら地道にやってみるか。
337 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 16:36:09 ] ふつけるのほうが 入門書としては 出来がいいようなキガスルな
338 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 19:10:52 ] >>328 うわぁっ、すごぉっ、すげぇー!
339 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 20:34:23 ] だまれカス
340 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 23:24:04 ] カスケル
341 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 11:37:28 ] ttp://www.youtube.com/watch?v=eLS6GHXWMpA みんな本当にこう感じてるのか?
342 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 16:18:31 ] >>341 カコイイ
343 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 17:38:49 ] >>341 すげー Haskoreってやつを使っているのかな。
344 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 17:51:04 ] >>341 最後の別のムービー紹介で リーリ・カル・マジーロがトップに来てるのにワロタw
345 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 17:55:45 ] >> 341,342,343 いまサウンドボードがイカれてて何がおもしろいのかサーッパリわからなかったんで 何を紹介しているムービーなのか解説してもらえないでせうか。
346 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 18:12:03 ] >>345 音楽のリズムパート(って正しい表現?)を記述したHaskellのコードがあって、それがBGMとして流れている。 コードを編集してロードしなおすとそれに連動して音楽も変わる。
347 名前:デフォルトの名無しさん mailto:sage [2006/09/04(月) 08:14:34 ] よく考えればMMLとあんまりは変わらないとも言えるけど…
348 名前:345 mailto:sage [2006/09/05(火) 01:10:24 ] >> 346 遅ればせながらサンクス。週末にでもサウンドボード調達してこよ。
349 名前:345 mailto:sage [2006/09/14(木) 00:06:08 ] 音付きで拝見しました。あまりよく知らないんだけどあんなのもHaskellが標準で 持ってる範囲内での記述なんですか?Lisp屋さんだとそれ専用のミニ言語平気で 作っちゃったりしてるけど似たようなものなのかな。
350 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 01:16:32 ] 328はpseudo-yamagata
351 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 02:12:13 ] >>343 en.wikipedia.org/wiki/Haskore こんなものがあったとは。。
352 名前:デフォルトの名無しさん mailto:sage [2006/09/19(火) 23:56:56 ] このスレにはイスラエルの工作員が紛れ込んでると聞きましたが。
353 名前:デフォルトの名無しさん mailto:sage [2006/09/20(水) 00:02:58 ] オッス オラ モサド
354 名前:デフォルトの名無しさん mailto:sage [2006/09/20(水) 00:28:57 ] 祖国がやべえ状態だってのに なんだかすっげえワクワクしてきたぞ!
355 名前:デフォルトの名無しさん mailto:sage [2006/09/29(金) 08:34:08 ] >>272 www.haskell.org/ghc/docs/latest/html/users_guide/runtime-control.html#rts-options-gc GHCのマニュアルによると、スタックはヒープ上に取られ、必要に応じて伸長する。 ヒープを使いきっていないのにスタックオーバーフローが起こるのは、無限ループに陥ったときに メモリを使い尽くさないように上限を定めているだけで、 # スタックの大きさの上限を40億バイトにする ./a.out +RTS -K4G のように上書きできる。
356 名前:デフォルトの名無しさん mailto:sage [2006/10/06(金) 17:47:48 ] syntax sugar cons :: a -> [a] -> [a] cons a b = a : b
357 名前:デフォルトの名無しさん mailto:sage [2006/10/07(土) 23:18:37 ] 諸君、議論したまえ。(プヒョゲラ)
358 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 09:08:42 ] 闇夜に仕事人の目がギロンギロン
359 名前:デフォルトの名無しさん [2006/10/21(土) 02:35:42 ] ありがとーおー ぼくのー とーもだちー ハスカァール にー あわせてー くぅー れー ぇーてぇー
360 名前:デフォルトの名無しさん [2006/10/21(土) 18:26:29 ] 良スレage
361 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 18:55:02 ] なにこの流れw
362 名前:デフォルトの名無しさん mailto:sage [2006/10/21(土) 19:09:55 ] 次スレこれでいこうぜ 【Haskell】あらいぐまハスケル【関数型言語】
363 名前:デフォルトの名無しさん [2006/10/24(火) 00:08:44 ] この言語は何で人気なの?
364 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 00:13:15 ] 別に大して人気はないと思う。 単に話題になることが多いだけじゃないかと。
365 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 00:35:18 ] ネタにし易いからかな。
366 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 22:24:58 ] pc8.2ch.net/test/read.cgi/tech/1149263630/909 飽きるまでなら付き合おう。 で、どこまで理解してる?
367 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 22:35:23 ] module Qsort where qsort _ [] = [] qsort f (x:xs) = before ++ (x : after) where before = qsort f $ filter (not . (f x)) xs after = qsort f $ filter (f x) xs moduleってなによ whereってなによ
368 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 22:52:17 ] module Qsort where ってのは、これからQsortという名前のモジュールを定義する、 詳細は以下である、と言う意味。(whereは「ただし」とでも読むべし) モジュールというのは、おおざっぱに言うと、 一つのファイル中で定義されたものたちをひとまとめにして名前をつけたもの。 この場合はQsortモジュールはただ一個の定義(qsort)だけからなる。 プログラムの他の部分からqsortを使いたいときは、 import Qsort として、Qsortモジュールの定義を使うことを宣言する。
369 名前:初心者A mailto:sage [2006/10/24(火) 23:03:51 ] モジュール・・・機能単位、交換可能な構成部分という意味の英単語(e-wordより) なるほど。Javaでいうところのクラスみたいな感じか import文もJavaといっしょだな モジュール ≒ Javaのパッケージ 定義 ≒ Javaのクラス 関数 = Javaのメソッド ここで疑問点が発生 下のような2行だけ書いたファイルでもOKのはずだけど これはなんで module とか where とか 定義名 がいらないの? foo x y = x + y hoge = 2
370 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 23:09:22 ] >>369 >これはなんで module とか where とか 定義名 がいらないの? module ... whereの部分は省略することができて、その場合 module Main(main) where と書かれているとみなされる。 (main)という括弧書きは、モジュール中の定義のうち、mainだけを外部に公開する、 という意味。括弧書きがないときは、全ての定義が公開される。
371 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 23:25:53 ] デフォルトではprivate(不可視)にしてるということか 次2行目 qsort _ [] = [] これは qsort が 定義名 でいいのかな _(アンダースコア) は 変数名っぽいけどそんなわけないよな そして、 [ ] (配列) = [ ] (配列) ??? わからない
372 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 23:39:37 ] >>371 []は空リスト。 _は厳密には変数名じゃないけど、そう考えても大して問題はない。 この行では、_がqsortの第一引数、[]が第二引数になっている。 qsort _ [] = [] は、qsortの第二引数が空リストのとき、第一引数に関係なく、結果は空リストである、と読む。 ここで定義しようとしているqsortは、第一引数として比較関数、第二引数としてリストを取り、 ソートされたリストを返す関数だから、この行は、「空リストをどんな比較関数を使ってソートしても結果は空リスト」と 言っていることになる。
373 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 00:04:32 ] 比較関数っていうのがよくわかんない Webで探したらこんな文章発見 >でも比較関数って何?って思いますよね。 >比較関数とは2つの引数を持ち、 >引数1が引数2より小さい場合は負の整数、 >同じ場合は0、 >引数1が引数2より大きい場合は正の整数を返します。 うーん・・・ _ (アンダースコア)がどういう役割なのかな、この場合 _(アンダースコア)以外はダメ? 例えば -(ハイフン)とか、ふつうのアルファベットとか
374 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 00:20:58 ] >>373 >比較関数っていうのがよくわかんない ここでは、引数を二つとって、第一引数が第二引数より「小さい」ときのみTrue、 そうでなければFalseを返す関数の事。 普通の意味での大小関係にしたがってTrue/Falseを返す関数を比較関数として与えれば qsortは昇順のソートをするし、逆に数値が大きいほど「小さい」と判断する 関数を与えればqsortは降順のソートをする。さらに、例えば引数の絶対値を比べる関数を 渡せば、絶対値が小さい順にソートすることができる。 > _ (アンダースコア)がどういう役割なのかな、この場合 _(アンダースコア)以外はダメ? 仮引数の名前なので、アルファベットからなる名前を好きにつけても良い。 qsort comparer [] = [] とか。ハイフンは演算子とみなされるのでだめ。
375 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 02:19:46 ] お札もえいないのか
376 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 10:17:13 ] お礼を期待して2chで書くのは不毛な行為だとオモタ。
377 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 12:05:22 ] >>375 「お札萌え居ないのか」? 巫女萌えならここに居るが何か。
378 名前:初心者A mailto:sage [2006/10/26(木) 02:47:04 ] 昨日はねちゃってたよ サンクス また明日とかよろ
379 名前:デフォルトの名無しさん mailto:sage [2006/10/26(木) 02:59:00 ] おれい?
380 名前: ◆XbPqxIJuLU mailto:sage [2006/12/02(土) 02:04:39 ] ∩___∩ | ノ|||,,.ノ ヽ、,,ヽ / ● ● | このスレは俺がもらうクマ | ( _●_) ミ 以後、「AAでHaskellのお勉強」クマ 彡、 ,、、|∪| ,,,ノ / . ヽノ ヽ | _r'゚lニニニl]_ ____/l fニニニニllニニ| \[ l===ニニl]}||||||||ll]}コl|====iニコ |l_,,=-'''~ | \... ヽ'''ニ「_,,,l⌒l。__。_]三i三三iF | 〈,,/ヽ___)|ll [`ー'
381 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:06:38 ] ∩∩ ; とりあえずHelloWorld書いてみるクマ ;|ノ||` ┬-‖ __,/●●| __ | | ‖ | ; |`(_●)/ ミ . Y ‖ | .彡|∪||、 , .| | ‖ /:~ ̄ ̄ ̄ ̄:/.| | ‖ ,|:::::. .......::/>> / ‖ /.::::: .. ...::::::|'(/\_/ ‖ ../:.::: .. :.:::/.:/ /‖\ /.:::. ....:::..:::/.:/ ' ̄ ̄ ̄ ̄ ̄ _/ |_| ̄ ̄ ̄ ̄|_|
382 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:09:08 ] main = putStrLn "Hello, World!" ∩___∩ | ノ ヽ / ● ● | こうですか!?わかりません! | ( _●_) ミ 彡、 |∪| 、`\ / __ ヽノ /´> ) (___) / (_/ | / | /\ \ | / ) ) ∪ ( \ \_)
383 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:10:28 ] できてんじゃねーかよ! .,. -──-、 __ /. : : : : : : : : :\ 〈〈〈〈 ヽ /.┛┗: : : : : : : : : :ヽ 〈⊃ ノ . !.::┓┏,-…-…-ミ: ::', | | ∩___∩ {::: : : : :i '⌒' '⌒'i: : ::}ノ ! | ノ --‐' 、_\ {:: : : : : | ェェ ェェ |: : :} / 、 / ,_;:;:;ノ、 ● | . { : : : : :| ,. |:: :;! / , ,,・_ | ( _●_) ミ . ヾ: : :: :i r‐-ニ-┐| ::ノ/ , ’,∴ ・ ¨彡、 |∪| ミ ゞイ! ヽ 二゙ノイゞ 、・∵ ’ / ヽノ ̄ヽ / _ ` ー一'´ ̄/ / /\ 〉 (___) / / /
384 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:25:44 ] ,..-──- 、 /. : : : : : : : : : \ Haskellはmainアクションからはじまるようになっている /.: : : : : : : : : : : : : : ヽ .,!::: : : :,-…-…-ミ: : : : :', 決まりごとだから深く考えちゃダメさ {:: : : : :i '⌒' '⌒' i: : : : :} {:: : : : | ェェ ェェ |: : : : :} そうそう、Haskellは大文字と小文字を区別するよ . { : : : :| ,.、 |:: : : :;! .ヾ: :: :i r‐-ニ-┐ | : : :ノ MainでもMAINでもない、mainじゃないといけない ゞイ! ヽ 二゙ノ イゞ‐′ ,.、-  ̄/ 入.` ー一'´ |` ┬-、 クマくん わかるかい? / ヽ. / ト-` 、ノ- | l l ヽ. / ∨ l |! | `> | i / |`二^> l. | | <__,| | _| |.|-< \ i / ,イ____!/ \ .| {.| ` - 、 ,.---ァ^! | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l __{ ___|└―ー/  ̄´ |ヽ |___ノ____________| }/ -= ヽ__ - 'ヽ -‐ ,r'゙ l | __f゙// ̄ ̄ _ -' |_____ ,. -  ̄ \____| | | -  ̄ / | _ | ̄ ̄ ̄ ̄ / \  ̄| ___`\ __ / _l - ̄ l___ / , / ヽi___.|  ̄ ̄ ̄ | _ 二 =〒  ̄ } ̄ / l | ! ̄ ̄| _______l -ヾ ̄ l/ l| |___|
385 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:30:34 ] _ /- イ、_ 簡単クマ __ /: : : : : : : : : : : ( 〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ 〈⊃ } {:: : : :ノ --‐' 、_\: : ::} ∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::} | ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ / ● ● | / ,,・_ | //  ̄7/ /::ノ | ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/ 彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ / __ ヽノ / / // |//\ 〉 (___) / / // /\ /
386 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:32:43 ] _ /- イ、_ ∩___∩ あぁたたたたたたたたたたたた /: : : : : : : : : : : ( | ノ ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ / ● | r‐っ'つ _,rノ´) {:: : : :ノ --‐' 、_\: : ::} | ( _●) ーニ三、_,Eノ‐_r' {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::} 彡、 |∪|| r'´)  ̄-一ーt_j'´ 、 l: :ノ /二―-、 |: ::ノ ゝ ヽノ _三 'ー'´) _,∩ ,,・_ | //  ̄7/ /::ノ / ー-−ニ ̄‐ヽ  ̄,_)' 一(´,__) `! , ’,∴ ・ ¨ 〉(_二─-┘{/ 一 - ―゙ゝ_,.) ニ(__,.)-''l-‐、・∵ ’ /、//|  ̄ ̄ヽ 一‐--(_) ノ` / // |//\ 〉 (__)' / // /\ / putStrLnってなんだクマ?
387 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:34:04 ] 関数名だボケ!! ,..||-ノ─ソ彡〈〈〈〈 ヽ &. : : : : : : : : : ミ〈⊃ } ミ.: : : : : : : : : : : : : : | | ,!::: : : :,-…-…-ミ: : : :| | ∩___∩ 三 : : : :i ;;;/:' '⌒' i: : : | | | ノ --‐' 、_\ .{:: : : : |:::+;;; ェェ .|: : : : ニ ! ,,・,_ / ,_;:;:;ノ、 ● | { : : : :|ヾ ,.、 |:: : : :; ! / ’,∴ ・ ¨ | ( _●_) ミ / ヾ: :: :i r‐- ┃┐.| : : :ノ/、・∵ ’ 彡、 |∪| ミ / __ゞイ!ヽ┃ニ゙ノ イゞ‐ / ヽノ ̄ヽ (___) /`' / /\ 〉
388 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:35:05 ] .,..-──- 、 r '´. : : : : : : : : : :ヽ /.: : : : : : : : : : : : : :: ヽ ,!::: : : : : ,-…-…-ミ:: : :', {:: : : : : :i ,;ノ;´:`ゞ、i: : :.:} もともと用意されてんだよ〜っ!! {:: : : : : :| ェェ;;;;;;;ェェ|: : : } { : : : : ::| ,.、 .| : : :;!∫ ヾ: :: : :i r‐-ニ┐| : riii= ゞイ! ヽ 二゙ノ イ「 ノ (⌒ ー ̄ ̄´ r⌒ ! 〉 ヽ弋パラッパッパ` ー' 〔勿\ ヽ ベキ ) r⌒丶) ベキ ドカ ドカ / ! |' ∩__∩ ボキ ドカ / /| l| ノ --‐' 、_\ ( く ! ~l / ,_;:;:;ノ、 ●| ドカ \ i | ‖彡 ( _●_) ミ ,__> ヽヽ从/ 彡 、 |∪| ミ ⊂ _ ⌒ヽ从 ⊃ ヽノ ̄⊃
389 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:43:42 ] ;;;;;;;;;;;;;;;;;;;;;(::::::::::::::::::::::::::::::: ,...ヾ ;;\:: ::l;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;/ ;;;;;;;;;;;;;;;;;;;;;;;;;ー-..::::ミミミ、ヾ ( );;) ヾ;;ヽ、 :i;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=-゙-`:::::::ミミ\ ゙゚''" i::ヽ;;i :: |;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:l / ;;;;;;;;;;;;;;;;;;;;;;;/::::::: :::::::.ミ::.'ヽ.........::::::::.、'_ノ l;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:i / ;;;;;;;;;;;;;;;;;,ノ:::::::::::. :::.` , 二;ニ= 、 ノ;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:ノ / ;;;;;;ー-'',::::::::::::::: ::: ' ,rェ ヽ` ヽ /;:;:;:;:;:;:;:;:;:;:;:;:;:// / ;;;;;;;;;;;;/":::::::::: _i ヽ゚ ン i` /;:;:;:;:;:;:;:;:;:;:;:;:;:ノ / / ー' ̄::::::::::::::::: ____ /:;:;:ヽ ー /;:;:;:;:;:;:;:;:;:;:;:;:;:// / / :::/::::::::::::::::::::: /;:;:;;:;:;:;:;:;:;:;:;:;:ヽ、 :;ー:ノミ; ::. /;:;:;:;:;:;:;:ー" ̄ / / / / :/:::::::::::::::::::::::: /;:;:;/:::::::::::\ \;ヽ/ ̄ : /;:;:;:;:;/"/ / / / / / :::::::::::::::;;:::::::::::: |:;:;:;:;:l ̄\:::::::::::\ );:ヽ /;:;:;:;:;:;l/ / / |\/\/ヽ∧ ::::::::::::::::::;;;::::::::. \:;:;ヽ ヽ:::::::::::::'/;:;:/ /;:;:;:;:;:;:丿/ / _/ ハ あ ::::::::::::::::::::;;;;:::::: \;:;\ |:::::::/;/ /;:;:;:.:_,- " / /\ ス ら ::::::::::::::::::::::;;;;;;::: 、. \;:;\ l::/;/ / ̄/ / / / ケ い :::::::::::::::::::::::::;;;;;;;;../ ̄ ー\ ;:;:;:/ // / / /< ル ぐ ::::::::::::::::::::::::::::;;/ ゙''ー 、_ / / / / / / !!! ま
390 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:46:09 ] _ /- イ、_ , /: : : : : : : : : : : ( 意味わからんわw ゚ + ` /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ ’, ’,∴ ・ ¨ {:: : : : : : ::;:;: ;: ;:;: ;: ::} ∩___∩ ii ’,∴ ェェ ( : : : ::;:;: ;: ;:;: ; : ::::} | : : ;: ヽ ! | | ! ,・,, (_l__\(: ::;:;: ;ヽ: ; : ::ノ / : : ;: |く^⌒!|| , ,,・_(_ヽ;:;:)ヽ: ::;:;: ;:; ::ノ | : : ::;:ミ ::;:| ! ∴ ・ ¨C〉 (_二:;: ;::;:/ 彡、 : : ::;:/⌒ ノ||!、 ’ ・∵ (、//|  ̄ヽ / / : : ::;:/!! / // |//\ 〉 (_/ : : ::;:/'' ̄ / // /
391 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:50:48 ] バカ専用 普通 ハッカー ウィザード ┝ - - - - ┿━━━┿━━━┥ ∩___∩ /) | ノ ヽ ( i ))) / ● ● | / / | ( _●_) |ノ / 今はここら辺クマーー!! 彡、 |∪| ,/ / ヽノ /
392 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:52:26 ] ∩─ー、 / ● 、_ `ヽ / ( ● ● |つ | /(入__ノ ミ そろそろモナドでもはじめるか・・・ 、 (_/ ノ \___ノ゙ / 丶' ⌒ヽ::: / ヽ / /::: / /へ ヘ/ /::: / \ ヾミ /|::: (__/| \___ノ/::: / /::: / y )::: / / /::: / /:::: / /::::: ( く:::::::: |\ ヽ::::: | .|\ \ ::::: \ .| .i::: \ ⌒i:: \ | /:::: ヽ 〈:: \ | i:::::: (__ノ: __ノ )::::: (_,,/\
393 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:53:10 ] まだはえーーよ! .,..-──- 、 r '´. : : : : : : : : : :ヽ /.: : : : : : : : : : : : : :: ヽ ,!::: : : : : ,-…-…-ミ:: : :',.. _ {:: : : : : :i ,;ノ;´:`ゞ、i: : :.:} / / _____ {:: : : : : :| ェェ;;;;;;;ェェ|: : : } ./ / /// \\ ./\ ∩___∩ { : : : : ::| ,.、 .| : : :;!./ \  ̄  ̄/./ | ノ --‐' 、_\ ヾ: :: : :i r‐-ニ┐| : r / /"\.> .__/./ / ,_;:;:ノ、 ● | ゞイ! ヽ 二゙ノ イ /__/ <__/ | ( _●_) ミ /⌒ `ー―''´ヽ \_ ~\彡、 |∪| ミ / | // \_/ ヽノ  ̄\ ( く"| _____|____,,___ /  ̄Z、 /,,,,,,,, /ヽ > \ ヽノ _|||||_____.爪_|―――゚'ヽ > ;;;'''''';;;';';; / <_/ r' ̄\_ 三〉)) ̄ ||||`ー' `-、ゝ ̄ ;;''' ∴。・、 )__/. ̄ ̄ |||| \ '':;:;,,,;;;'''`・゚。;;
394 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 02:59:51 ] -― ̄ ̄ ` ―-- _ , ´ , ~  ̄、"ー 、 _/ / ,r _ ヽ ノ , ´ / / ● i" ,/ ,| / / _i⌒ l| i | と,-‐ ´ ̄ / / (⊂ ● j'__ | (´__ 、 / /  ̄!,__,u● | モナドって言っただけで撃つことないじゃん  ̄ ̄`ヾ_ し u l| i /ヽ、 ちょっと調子にのっただけなのに・・・ ,_ \ ノ(`'__ノ (__  ̄~" __ , --‐一~⊂ ⊃_  ̄ ̄ ̄ ⊂ ̄ __⊃ ⊂_____⊃
395 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 03:11:55 ] | |.-──-、 | : : : : : : : : \ |: : : : : : : : : : : ヽ 次の問題は length関数だ |-…-…-ミ: : : : :', | '⌒' '⌒' i: : : : :} length [1, 2, 3, 4, 5, 6, 7] | ェェ ェェ |: : : : :} length ["abc", "AAA", "クマ"] | ,.、 |:: : : :;! length [ ""] | r‐-ニ-┐| : : :ノ length "ヌケドナルド" |! ヽ 二゙ノ イゞ‐′ length "kuma" | ` ー一'´丿 \ | \___/ /`丶、 | /~ト、 / l \
396 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 03:14:55 ] ,..-──- 、 /. : : : : : : : : : \ /.: : : : : : : : : : : : : : ヽ length関数は要素の数を返す! ,!::: : : :,-…-…-ミ: : : : :', 関数の右にあるのが引数だ {:: : : : :i '⌒' '⌒' i: : : : :} どんな値でも長さを調べられるぜ {:: : : : | ェェ ェェ | : : : : :} さぁ答えろ! 間違えたら殺す!! { : : : :| ,.、 .| :: : : :;! _∧ ヾ: :: :i r‐-ニ-┐ | : : :ノ ∧ ( \ ゞイ! ヽ 二゙ノ イゞ‐ ′ //~⌒ヽ |( ● )| i\ _,,ノ| ` ー一'´//\ /i |( ● )| \_ノ ^i | _,,..r''''" ノ | \`', / / / ̄`''ー | i^ ゝ_ノ |_|,-''iつl/´ ヽノ| /\ / 、│ l⊂i''-,|_| [__|_|/〉ヽ、 / |/ );;;;/\/ 'く /〈\|_|__] [ニニ〉 ', ヽ. | /⌒| / ゚/ / 〈二二] └―' '─┘
397 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 03:18:17 ] ∩─ー、 / ● 、_ `ヽ / ( ● ● |つ | /(入__ノ ミ 上から・・・ 、 (_/ ノ \___ノ゙ 7 / 丶' ⌒ヽ::: 7 / ヽ / /::: 0 / /へ ヘ/ /::: 1 / \ ヾミ /|::: 1 (__/| \___ノ/::: / /::: / y )::: / / /::: / /:::: / /::::: ( く:::::::: |\ ヽ::::: | .|\ \ ::::: \ .| .i::: \ ⌒i:: \ | /:::: ヽ 〈:: \ | i:::::: (__ノ: __ノ )::::: (_,,/\
398 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 03:18:55 ] ちげーーよ!! .,..-──- 、 r '´. : : : : : : : : : :ヽ /.: : : : : : : : : : : : : :: ヽ ,!::: : : : : ,-…-…-ミ:: : :',.. _ {:: : : : : :i ,;ノ;´:`ゞ、i: : :.:} / / _____ {:: : : : : :| ェェ;;;;;;;ェェ|: : : } ./ / /// \\ ./\ ∩___∩ { : : : : ::| ,.、 .| : : :;!./ \  ̄  ̄/./ | ノ --‐' 、_\ ヾ: :: : :i r‐-ニ┐| : r / /"\.> .__/./ / ,_;:;:ノ、 ● | ゞイ! ヽ 二゙ノ イ /__/ <__/ | ( _●_) ミ /⌒ `ー―''´ヽ \_ ~\彡、 |∪| ミ / | // \_/ ヽノ  ̄\ ( く"| _____|____,,___ /  ̄Z、 /,,,,,,,, /ヽ > \ ヽノ _|||||_____.爪_|―――゚'ヽ > ;;;'''''';;;';';; / <_/ r' ̄\_ 三〉)) ̄ ||||`ー' `-、ゝ ̄ ;;''' ∴。・、 )__/. ̄ ̄ |||| \ '':;:;,,,;;;'''`・゚。;;
399 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 03:26:35 ] /. : : : : : : : : : \ /.: : : : : : : : : : : : : : ヽ そんなバカなクマ ,!::: : : :,-…-…-ミ: : : : :', {:: : : : :i'⌒' '⌒' i: : : : :} ∩___∩ {:: : : : | ェェ ェェ |: : : : :} | ノ --‐' 、_\: : : :| ,.、 |:: : : :;! / ,_;:;:;ノ、 ●ヾ: :: :i r‐-ニ-┐ | : : :ノ 上の3つは | ( _●_) ミゞイ! ヽ二゙ノ イゞ‐′ リスト(配列)だから正解!! 彡、 |∪| ミ ⌒゛ /⌒ヽ\ /⌒ ヽノ`''/ ⌒ ー--、' ,/`/ / /~〔_彡.ミ⌒ヽー,==-、 ヽ_,zn' / | | / `^,/  ̄,ノ ヽ、__^ノ / 彡ノ | /⌒ヽ i⌒ ー 、 ヽ ヽ l人 | .) ` . |ー┐ \ `⌒ | ノヽ、_ ノ.ヽ」 /. : : : : : : : : : \ /.: : : : : : : : : : : : : : ヽ ,!::: : : :,-…-…-ミ: : : : :', {:: : : : :i '⌒' '⌒' i: : : : :} {:: : : : | ェェ ェェ |: : : : :} でも下の2つは { : : : :| ,.、 |:: : : :;! ただの文字列! ヾ: :: :i r‐-ニ-┐| : : :ノ ,,,! ヽ二゙ノ イゞ‐′ こういう場合は文字数を ひっかけクマ・・・ /  ̄⌒ヽ 数えるんだろーがぁぁ!! | lヽ、 | __ ∩___∩ L__| |_. `ヽ | ノ --‐' 、_\ lヽ‐'〉 .| / ,_;:;:;ノ、 ●ヾ _ \/ .| | ( _●_) ミ ー-`\ \,,ノギリギリ 彡、 |∪| ミ. `ヽ ) 彡 ヽノ/ ,// /
400 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 03:30:11 ] ,、__ /ヽ ``ヽ // ̄' ̄ ̄ヽ.\ `i |,_, ,_,、 i .> ト|,:ニ/ヽ二|'ー!イ. やはり所詮はクマ | ̄,.レ,..、 )7 ! ''===i /'. ヌケドを殺るのはワシしかおらんな ヽ `! !' ,//\_ _,―イ>`'´‐< / \_ _/ _/ /`―「_!―'./ / `―::、 _/ |i | ///' / !_ \ ._∧ノ | i i' ! | | / ・'/ i' イi / \| | | | | | / _∧=i | /| |( ● )| i\| i | | | レ'/ \| | \_ノ ^i || ヽ | フ |( ● )| i\| ノ |_|,-''iつl| \/ /\_ノ ^i | ,‐、」 !| [ニニ〉| / / |_|,-''iつl \\\| └―'./ / / [__|_|/〉 ) ヽ ! | \_/ // [ニニ〉// ! | 」 | | └―'V | |_,,..::‐''´
401 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 03:33:18 ] ,..-──- 、 /. : : : : : : : : : \ /.: : : : : : : : : : : : : : ヽ __,、 ≡ ,!::: : : :,-…-…-ミ: : : : :', バカめ 〃ニ;;::`lヽ,,_ ≡ {:: : : : :i '⌒' '⌒' i: : : : :} ジジイの命もこれまでだ 〈 (lll!! テ-;;;;゙fn __,,--、_ .. {:: : : : | ェェ ェェ |: : : : :} ≡ /ヽ-〃;;;;;;;llllll7,,__/" \三=ー"{ : : : :| ,.、 |:: : : :;! ≡ >、/:::/<;;;lllメ \ヾ、 ヽTf=ヽ` : :: :i r‐-ニ-┐ | : : :ノ j,, ヾて)r=- | ヾ: :ヽ;;: | l | l ゞイ! ヽ 二゙ノ イゞ‐′ ≡ ,イ ヽ二)l(_,>" l| ::\;:: | | | ヽ,,` ー一'/ V i、ヽ--イll"/ ,, ,//,, :;; l // l く> /::l"'i::lll1-=:::: ̄\ ヾ==:"::^::;;:::/;;;;;;;;;:::::::::::::: :::::ゞ ノ/ L/〈:::t_イ::/ll|─-== ヾ \__::::::::/::::::::::::_;;;;;;;;;;;;;;;;;ノノ ヘ >(゙ )l:::l-┴ヾ、ヽ )  ̄~~ ̄ ̄/ :::|T==--::::: // / ト=-|:|-─ ( l / / :: ::l l::::::::::::::::::/ /:::::::::::/:::::(ヽ--─ / | / ヽ_=--"⌒ ゙゙̄ヾ:/ /:::::::/:::::::::`<==-- ノ / / / / \/::::::::::::::::::::::::::::: ̄'''""::// / / :::: ヾ::::::::::::::::::::::::::::べ__;;;--"
402 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 03:33:59 ] __ ,、 /'' /ヽ. / /' ̄ ̄ ̄ ヽヽ/ ̄) <. i ,_, ,_,|. i' | くニ} {fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj ト,!ー|二/'ヽニ:,|イ. | ( ,..J,、 ̄|| | バカモン! 遅延評価の威力を見せてくれるわ! .'ヽ i==='' ! | ヽ, `! !'/ | くニ} {fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj / ,へ  ̄ ̄`ヽ / / \ t──┐ | (__/ > ). | |_ / / (___) ( \ \__)
403 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 03:34:40 ] __ ,、 /'' /ヽ. / /' ̄ ̄ ̄ ヽヽ/ ̄) くニ} {f<. i ,_,({fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj ト,!ー|二/'ヽニ:,|イ. | ( ,..J,、 ̄|| | ・・・・・・ .'ヽ i==='' ! | ヽ, `! !'/ | くニ} {fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj / ,へ  ̄ ̄`ヽ / / \ t──┐ | (__/ > ). | |_ / / (___) ( \ \__)
404 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 03:48:22 ] バカ専用 普通 ハッカー ウィザード ┝ - - - - ┿━━━┿━━━┥ ∩___∩ /) | ノ ヽ ( i ))) / ● ● | / / | ( _●_) |ノ / まだここら辺クマーー!! 彡、 |∪| ,/ / ヽノ /
405 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 13:34:53 ] >>396 ,397,399 length [""] は、空文字列をひとつ含む配列なんだから 1 だよ。
406 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 13:59:22 ] // | | ,イ // l | // // ∩___∩ / ||ノノ_/ / /'" | ノ ヽ / / / ,/./ ● ● | / ;/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ,. ‐'" |:| ( _●_) ミ / ,< 間違えてんじゃねーかよ!! , ィ'" |:::彡 |∪| / , ' \___________ ,.イ |:::::::L ヽノ,,,,ノ .//´ ̄ ̄`ヽ \ //i| ,.|::::::レ! /:::::/ // \ ( ̄`ヽ、 \ ./:::::{ |ヽ |ヽ∠.|::::::| メ:::::::; '_/// /`''"⌒i ,.....,_ \、 `ヽ、\ `''" `'''`ー-|'" ,':::::::|':::::::; ' / / ヾ-┤ |'´,. --.、`丶、\ `\ ノ {::::::/:::::::/__ノ ∠/ / _ /- イ、_ ヽ ヽ / ノ/⌒ヽ::::} / /: : : : : : : : : : : (' ,ノ,ハ ガッ < {ム/ }/ ∠/ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ | ヽ `ヽ、 'ー'-'‐'′ / {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::} !`'ー─ゝ、 _ ヽ / l: :ノ /二―-、 |: ::ノ / _ `丶..ノF'! ヽ-‐''" ̄``ヽ | //  ̄7/ /::ノ ̄ヽ ̄ `i丶、__,.ノ ヾ(_二─-┘{/ ヽ、_ }ヽ、  ̄ ̄ ``'"ー-
407 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 21:51:40 ] length ["abc", "AAA", "クマ"] は 7 じゃなくて 3 だろ!
408 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 22:57:35 ] | | | | _ /- イ、_ |_|_|_|_ バカ野郎! /: : : : : : : : : : : ( / 〉〉〉〉 カスが! l⌒)OOo /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ { ⊂〉 ∩___∩ { ) ) {:: : : :ノ --‐' 、_\: : ::} | | ∩___∩ | ノ ヽ | ::::::/ {:: : :ノ ,_;:;:;ノ ////ヾ: :::} l l / ヽ | / ● ● | / ::::| 、 l: :ノ /二―-、 |: ::ノ ヽ | ● ● ヽ | ( _●_) ミ/ ) ,,・_ | //  ̄7/ /::ノ .・,,; \彡 (_●_ ) | 彡、 |∪| / / ̄, ’,∴ ・ ¨ 〉(_二─-┘{/ ∴ ;・, ; \ |∪| ミ / __ ヽノ / / 、・∵ ’ /、//|  ̄ ̄ヽ 、;:,・ ヽ. ヽノ___ ヽ (___) / / / // |//\ 〉 ヽ (_____)
409 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 22:58:52 ] うるせーばか! __ /- イ、_ ∩___∩ / 〉〉〉〉 /: : : : : : : : : : : ( /_ノ `ー- ゝ\ 、 { ⊂〉/: : : : ::;:;: ;: ;:;: ; : : : ::ゝ〈〈〈〈 ヽ ∩___∩ | ● ゝ:;;;:;:_, ヽ , ,・_ | {:: : : :ノ --‐' 、_\: : ::}〈⊃ } | ノ --‐' 、_\ 彡 (_●_ ) '' |, ’ ,∴ l {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::} | | 、 / ,_;;;:;ノ、 ● | 彡、 |∪| ミ、・∵ ’ ヽ l: :ノ /二―-、 |: ::ノ ! ,,・_ | ( _●_) ミ γ ̄ ヽノ ヽ) \ | //  ̄7/ /::ノ / , ’,∴ ・¨彡、 |∪| ミ 〈 /i i \ 〉(_二─-┘{/ / 、・∵ ’ / ヽノ ̄ヽ ノ ノ ヽ 、//|  ̄ /´ / /\ 〉
410 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 23:07:38 ] >>395 【問題】 length [1, 2, 3, 4, 5, 6, 7] length ["abc", "AAA", "クマ"] length [ ""] length "ヌケドナルド" length "kuma" 【答え】 7 3 1 6 4 ∩___∩ | ノ ヽ / ● ● | クマクマ | ( _●_) ミ 彡、 |∪| 、`\ / __ ヽノ /´> ) (___)f^f^f^f^f^f^f^f^f^-┐ | |~ ~ ~ ~ ~ ~ ~ ~ ~ │ | | 配列は要素数 │ | / | 文字列は文字数| | / | 正直すまんクマ | ∪ |_____________| \_)
411 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 01:33:32 ] . ┌────────────────────┐ つ | 文字列 = 文字のリスト │ . | "kuma" .→ ['k', 'u', 'm', 'a'] | . | "ヌケドナルド" → ['ヌ', 'ケ', 'ド', 'ナ', 'ル', 'ド'] .| . └────────────────────┘ つ [] == ""
412 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 02:50:45 ] 正確には [] :: [Char] だな
413 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 19:26:12 ] Ctrl-Dを押すまで結果が出力されないんだが・・・。 mapMを使ってるせいだろうか。 main = do cs <- getContents r <- mapM hoge $ lines cs putStr $ head r hoge :: String -> IO String hoge x = return x
414 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 21:26:50 ] >>413 その通り。 csの終端を見つけるまでmapM_が終わらないから、 putStrが実行されることもない。
415 名前:414 mailto:sage [2006/12/03(日) 21:27:23 ] ごめん。mapM_じゃなくてmapMね。
416 名前:413 mailto:sage [2006/12/03(日) 23:45:53 ] >>414 ,415 なるほど。ありがとう。 一行入力するごとに結果を返してほしいのだが、いい方法はないのかな。 mapMはsequence . mapらしいので、いろいろ組み合わせて書き直してみた。 main = do cs <- getContents mapM_ (putStr . unlines =<<) $ map sequence $ map (:[]) $ map hoge $ lines cs hoge :: String -> IO String hoge x = return x こうすれば望みの結果が得られるようなのだが、ちょっとめんどくさすぎるな・・・(・∀・;)
417 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 00:29:46 ] >>416 IOは上から順に実行されるのが原則(getContentsは例外)で、 評価と違って「値の要求があって初めて」実行したりはしない。 だから r <- mapM hoge $ lines cs とあったら、rが必要とされるか否かにかかわらずmapMは最後まで実行される。 これは、そうでないと動作の順序を予測するのが難しくなって不便だからだ。 どうしてもその挙動が必要なら、unsafeInterleaveIOという関数を使えば実現できる。 ちなみにそのコードは行ごとにputStrしているだけで、 mapM_ putStrLn $ lines cs と書いているのとかわらない。 何がしたいかをもう少し詳しく教えてくれたら、もうちょっとまともな助言ができると思う。
418 名前:413 mailto:sage [2006/12/04(月) 01:51:46 ] >>417 >評価と違って「値の要求があって初めて」実行したりはしない。 >だから >r <- mapM hoge $ lines cs >とあったら、rが必要とされるか否かにかかわらずmapMは最後まで実行される。 あぁ、なるほど。なんでうまくいかなかったのか、やっとすっきりした。 結果が必要かどうか関係ないのね・・・。 自分が作りたかったのは、ハッシュテーブルに入力されたものを入れて、そのときのハッシュテーブルの中身を返すという関数。 ↓こんな感じなのを作ったのだが、入力が終わらないと処理が先に進まなくて困ってる次第。 import Data.HashTable as HashTable main = do cs <- getContents hash <- new (==) hashString r <- mapM (hoge hash) $ lines cs putStr $ unlines r hoge :: (HashTable String Int) -> String -> IO String hoge _ [] = return [] hoge hash key = do insert hash key 1 h <- toList hash return $ show h
419 名前:デフォルトの名無しさん mailto:sage [2006/12/04(月) 03:03:58 ] >>418 それと同じことをするだけなら、mapMでハッシュ表の操作と同時に出力もすれば良い。 mapM_ (\line -> hoge hash line >>= putStrLn) $ line cs 元のコードのように、値を生成する部分(mapM hoge)と利用する部分(putStrLn)をプログラム上で分離したい場合は 多少の工夫がいる。例えば、入出力をしながらa型の値を生み出すジェネレータを次のように定義して、 newtype Generator a = Gen (IO (Maybe (a, Generator a))) mapMで[String]を生み出す代わりにGenerator Stringとして記述するとか。 ただし、標準のリストと違って操作関数が用意されていないので面倒ではある。
420 名前:413 mailto:sage [2006/12/04(月) 14:08:07 ] >>419 そうか、なるほど、mapM_の中で完結させれば良かったのか・・・。 mapMの返り値を受け取って処理しないといけない、って思いこんでた。 なんて頭が固いんだ、俺はorz ジェネレータを使って云々かんぬんってのはまだ理解できないので、もっと勉強してみるよ。 ほんとにありがと!
421 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 11:29:31 ] 417を読むまで、doの中に列挙されているものは上から下へ遅延評価されるものだと思ってたorz getContentsは例外なのね・・・。GHCのソースを見たらunsafeInterleaveIOを使ってたよ。
422 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 17:55:53 ] 本スレを見たあとこっちに来るとなんかほっとする
423 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 18:16:27 ] んじゃ、そろそろ圏論勉強会をここではじめるか
424 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 18:36:06 ] AAで頼むわ
425 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 18:42:03 ] >>423 仕切ってくれるの? ちょっと期待
426 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 19:18:52 ] AAじゃなくてもたのむわ この間友達に訊かれて、Haskell使いでないけど興味持った。
427 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 20:28:19 ] 2ちゃんっぽい解説をわくてかしながら待ってますよ
428 名前:デフォルトの名無しさん mailto:sage [2006/12/10(日) 21:32:19 ] おまいら、なんで本スレに行かないんだよw
429 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 00:00:51 ] だって本スレ2chのノリじゃねーんだもん
430 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 00:12:22 ] あそこは2chじゃねーよなw
431 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 00:21:23 ] あそこはプログラミングする気が無い奴らに犯されてしまった 今からここが本スレになります
432 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 15:01:43 ] 早く家に帰ってHaskellを犯りたい(*´д`)
433 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 18:34:26 ] www.haskell.org/ghc/docs/latest/html/users_guide/primitives.html ここ見てUnboxed typeを使ってみようとしたんだが、Top-level bindings for unlifted types aren't allowed と出てコンパイルできん。 まあ、使い方を全然理解してないせいだと思うのだが(top-level bindingsとかunliftの意味もわからんし)、どこか解説ページないかな。 つか、あのページの説明だけでみんなは理解できるのだろうか(・∀・;)
434 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 19:00:25 ] >どこか解説ページないかな。 なさそう。 >top-level bindings モジュールレベルの束縛のこと。 module Foo where f x = let y = x + 1 in y * 2 なら、fはトップレベルの束縛で、yはそうではない。 >unlifted types unboxed typesとほとんど同義だと思う。 というか本スレに書けyo
435 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 19:02:43 ] 見てみたら>>433 のリンク先にlifted typeの説明あるじゃん。 >Primitive types are always unlifted; that is, a value of a primitive type cannot be bottom.
436 名前:433 mailto:sage [2006/12/11(月) 21:43:56 ] >>434 詳しい説明をありがとう。 >>top-level bindings >モジュールレベルの束縛のこと。 さんくす!さっきのエラーは出なくなった! 今度は#がはずせないという問題にぶち当たったけど、こっちはI#の存在に気づいて解決した。 >というか本スレに書けyo あっちは圏論の話題が中心だから、初歩的なことは書きづらくて・・・。 >>435 >見てみたら>>433 のリンク先にlifted typeの説明あるじゃん。 すまん。読んでたけどそっちも全く意味わからんかった。
437 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 22:57:29 ] >>436 >すまん。読んでたけどそっちも全く意味わからんかった。 ボトムっていうのは、停止しない/エラーになる計算の結果を表す概念上の値のこと。 (この辺厳密じゃないかも。間違ってたら分かってる人が突っ込んでくれることを期待) 例えば b :: Int b = b と定義したとする。bを評価しようとすると止まらないから、bにはふつうの意味での値はない。しかし、 f :: Int -> Int f x = 4 という関数があったとして、f bは4を返す。つまりfは問題なく呼ばれている。 では呼ばれたときの引数は何か、というのが問題になるが、これを「fはボトムを引数にして呼ばれた」 ということにする。つまり、bは評価しても止まらないけど、ボトムという仮想的な値を持っていることにする。 こうすると議論が単純になる。ちなみに、こう考えると、BoolにはTrue、False、ボトムの三値があることに なるし、32ビットマシン上のGHCではIntに2^32+1個の値があることになる。 一方、実装を考えると、fに渡されるのは未評価のbで、これの実体はクロージャ、 あるいは関数ポインタ。bを評価することは、この関数ポインタを呼び出すことに相当する。 この場合はbを評価しようとすると止まらないわけだけど、こういう挙動がありえるためにはそもそも bが関数ポインタでなきゃならない。 unboxed typeはただの計算器上の整数で、関数ポインタを隠し持つ余地はない。 Int#は厳密に2^32個の値しかとれない。つまり、ボトムになれない。よってunlifted type。 >あっちは圏論の話題が中心だから、初歩的なことは書きづらくて・・・。 たまたま圏論の話題で盛り上がっていただけで、気にすることはないと思う。 もともとそういうスレじゃないし。むしろ俺にも分かる話題は歓迎w
438 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 23:39:10 ] haskellはプログラムを書く以外にも楽しみ方がある言語だから、棲み分けが起きてもいいんじゃないかな。次スレはちゃんとしたタイトルにしようぜ
439 名前:デフォルトの名無しさん mailto:sage [2006/12/11(月) 23:44:58 ] たとえ住みわけが必要だとしても、板の趣旨からして、 本スレはプログラムの話題、 理論的な話は情報学板、のほうがいいんじゃないだろうか。
440 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 15:37:04 ] モナドから値を取り出す関数ってないんでしょうか? hoge :: m a -> a みたいな.
441 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 15:53:12 ] >>440 個々のモナドごとにある。 head :: [a] -> a fromJust :: Maybe a -> a fromMaybe :: a -> Maybe a -> a evalState :: State s a -> s -> a runST :: (forall s. ST s a) -> a unsafePerformIO :: IO a -> a -- 副作用があるので取扱い注意 ちなみにIOモナドだけは値を取り出す必要がない。 取り出さずに全部まとめてそれにmainを束縛すれば良いので。
442 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 20:07:25 ] >>440 >>=関数を使ってください
443 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 21:50:17 ] 計算の途中でIOがつくと、その後ずっとついて回るからなんか気持ち悪い
444 名前:デフォルトの名無しさん mailto:sage [2006/12/12(火) 22:35:08 ] >>443 それによって参照透明性を保ってるんじゃないの? 詳しい人教えて!
445 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 16:00:42 ] インストールに7時間かかりました。なにこの敷居の高さ
446 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 18:03:20 ] >>4457 時間もあきらめずにインストールした喪前が大好きだよ!
447 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 22:40:42 ] 敷居が高いけど、なれてくるとかなり楽しい。 ひょっとして、haskellはツンデレ美少女なんではなかろうか。 haskell「ごめんね素直じゃなくて」 俺「いや、しょうがないって」 haskell「・・・。お兄ちゃん、IOモナドの仕組みが知りたい、って言ってたよね」 俺「ん? まーな」 haskell「でも、そのためには私の中身を見ないとだめだよね・・・」 俺「い、いや、無理しなくていいよ」 haskell「・・・。見てもいいよ」 俺「え?」 haskell「見てもいいよ! お兄ちゃんだったらいいよ!」
448 名前:デフォルトの名無しさん mailto:sage [2006/12/13(水) 23:12:10 ] ↓Haskell Brooks Curryの肖像
449 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 02:44:08 ] www.haskell.org/bio.html ( ・∀・) <呼んだ?
450 名前:デフォルトの名無しさん mailto:dage [2006/12/14(木) 12:04:41 ] 今日はUnsafe IOの日だから中に出しちゃだめー!!!
451 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 17:34:55 ] >>443 データ構造書くのはIOを入れずにやれという暗黙のメッセージだと思う プログラムのしくみ本体とIOの部分を分けるということ その方が実際動作が速いみたいだし
452 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 21:30:35 ] もう、中に出すからforkIOしちゃったじゃないo(*`ε´*)o
453 名前:デフォルトの名無しさん mailto:sage [2006/12/14(木) 21:49:49 ] HashTableがIOを返すのがにんともかんとも・・・。
454 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 20:27:21 ] 本スレは活気があっていいなぁ・・・
455 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:32:22 ] また俺がAA書いてやろうか?
456 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 10:19:52 ] haskell中級者になったクマきぼん
457 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 23:04:25 ] >>456 俺が初心者な以上、それは無理ってもんだ
458 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 00:06:46 ] 今でも遅延ストリーム萌な人いませんか?
459 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 01:35:34 ] みなさんハスケルのどこが萌えですか。 僕は似たような記号を多用するその文体のとっつきにくさに萌えです。
460 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 01:42:02 ] やっぱ>>447 じゃね?
461 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 03:06:45 ] 俺はモナドという不思議な雰囲気を持ったツンデレ美少女なところに萌えてる。 haskellたんを知ってから仕事に全く集中できなくなってしまったよ・・・
462 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 06:46:57 ] あの、質問しても良いです? 「ふつうのHaskellプログラミング」からなんですが、 length [""] -> 1 length [] -> 0 の""というのは文字が一文字も無い文字列を表しているのでしょうか? もう一つ。 a b c みたいに一行ずつ保存されているファイルは、エディタからはそうみえるだけで 実際には"a\nb\nc\c"みたいに保存されているのでしょうか? そうじゃないとlines関数でリストに出来ないですもんね?
463 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 17:38:31 ] >の""というのは文字が一文字も無い文字列を表しているのでしょうか? その通り。 >実際には"a\nb\nc\c"みたいに保存されているのでしょうか? その通り。
464 名前:デフォルトの名無しさん mailto:sage [2007/01/04(木) 16:06:05 ] >>463 回答有り難うございます!
465 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 07:23:21 ] こういう関数をHaskellで書くとしたら どう書くのがベターでしょうか? # Rubyですが def hoge(ary) ary.each_index do |i| j = rand(i+1) ary[i], ary[j] = ary[j], ary[i] end end
466 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 23:09:05 ] >>465 こんな感じになった。やたらと面倒だったので改善案募集。 {-# OPTIONS_GHC -fglawgow-exts #-} module Test where import System.Random import Data.Array.IArray import Data.Array.ST import Control.Monad.ST hoge :: forall a i e. (IArray a e, Ix i, Random i) => a i e -> StdGen -> (a i e, StdGen) hoge ia gi = runST act where act :: forall s. ST s (a i e, StdGen) act = do ma <- thaw ia let _ = ma :: STArray s i e g' <- shuffle ma gi first ra <- unsafeFreeze ma return (ra, g') (first, last) = bounds ia shuffle a g i = case ran of [] -> return g _:next:_ -> do let (j, g') = randomR (i, last) g x <- readArray a i y <- readArray a j writeArray a i y writeArray a j x shuffle a g' next where ran = range (i, last)
467 名前:466 mailto:sage [2007/01/11(木) 23:19:28 ] まちがってた。 {-# OPTIONS_GHC -fglasgow-exts #-} module Test where import System.Random import Data.Array.IArray import Data.Array.ST import Control.Monad.ST hoge :: forall a i e. (IArray a e, Ix i, Random i) => a i e -> StdGen -> (a i e, StdGen) hoge ia gi = runST act where act :: forall s. ST s (a i e, StdGen) act = do ma <- thaw ia let _ = ma :: STArray s i e g' <- shuffle ma gi (range bo) ra <- unsafeFreeze ma return (ra, g') bo@(_, last) = bounds ia shuffle a g [] = return g shuffle a g (i:is) = do let (j, g') = randomR (i, last) g x <- readArray a i y <- readArray a j writeArray a i y writeArray a j x shuffle a g' is
468 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 17:10:31 ] >>465 >>467 の人のようにこういう操作はArrayの方が得意だけど無理矢理やってみた 手抜きして右からまわしてる import Random -- main = print [1,2,3] >> hogeIO [1,2,3] >>= print hogeIO :: [a] -> IO [a] hogeIO xs = getStdRandom (hoge xs) hoge :: (RandomGen g) => [a] -> g -> ([a], g) hoge xs g = foldr iter ([],g) xs where iter x (xs,g) = (x':xs', g') where ((x', _:xs'), g') = replaceR x (x:xs) g replaceR :: (RandomGen g) => a -> [a] -> g -> ((a, [a]), g) replaceR x xs g = (replace i x xs, g') where (i,g') = randomR (0, length xs - 1) g replace :: Int -> a -> [a] -> (a,[a]) replace n x xs = (z, ys ++ x:zs) where (ys, z:zs) = splitAt n xs
469 名前:468 mailto:sage [2007/01/13(土) 21:04:49 ] Stateで書き換えてみたけど相変わらず長い (replaceやmainの定義は同じ) import Control.Monad.State type Rand a = State StdGen a hogeIO :: [a] -> IO [a] hogeIO xs = do g <- newStdGen return $ evalState (hoge xs) g hoge :: [a] -> Rand [a] hoge xs = foldr ((=<<).iter) (return []) xs where iter x xs = do (x', _:xs') <- replaceR x (x:xs) return (x':xs') replaceR :: a -> [a] -> Rand (a,[a]) replaceR x xs = do i <- State $ randomR (0, length xs - 1) return $ replace i x xs
470 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 23:20:57 ] runSTとかunsafeFreezeとかさっぱりわからん。 なんかくやしい。
471 名前:デフォルトの名無しさん [2007/02/14(水) 00:17:05 ] 良スレ 保守
472 名前:380 mailto:sage [2007/02/14(水) 23:30:00 ] 【第一部】 AAでHaskellのお勉強(超初心者用) >>380-410 【第二部】 AAで圏論のお勉強(入門編) Coming soon!
473 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:00:34 ] ,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; ヾ;;;ハ ノ .::!lリ;;r゙ 圏論は難しい・・・ `Z;i 〈.,_..,. ノ;;;;;;;;> ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f そんなふうに考えていた時期が ~''戈ヽ `二´ r'´:::. `! 俺にもありました
474 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:01:18 ] / .\ / .\ \ / \ / \ ___________ . / \ ./ \ / | \/ \/...| | | | | | | | | .._ |_| |_|_.. | | さあ‥ 逝こうか‥‥ | | | | | | | | | | | | | | | |/ ..\| | | | | | .._|/| _ _ _ _ _ _ _ _ ...|\|_ / ..| | _−_−_−_−_− _ | | \ | |/_/━ ━ ━ ━ ━ ━\_\| | .._| /_/━ ━ ━ ━ ━ ━ ━ \_\.|_ /_/━ ━ ━ ━ ━ ━ ━ \_\ / /━ ━ ━ ━ ━ ━ ━\ \
475 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 22:54:57 ] ∩___∩ | ノ ヽ / ● ● | たった一つの命を捨てて |◎) ̄  ̄|| ̄ ̄ ) ミ 生まれ変わった不死身の体 彡、___||_/`\ 鉄の圏論を叩いて砕く / __ /´> ) クマーンがやらねば誰がやる (___) / (_/ | / | /\ \ | / ) ) ∪ ( \ \_)
476 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 23:04:19 ] _i^i__i^i_ i^i ._i^i_ __, -―- 、___ |*||*| ∩___∩ i^i _i^i_ | | |@ll|(_/,,,, ,,,, ヽ_) |≡||≡|| ノ ヽ ([])|;□;|.(≡)|_| |● ● | どうすれば圏論をわかりやすく . 二二/ ● |二二( (二二二二 彡(_●_ ) ミ 説明できますかね? | ミ ) ) / ` ''∪'' / ヽ 彡、 _ノ Gノ'フ= ___ / /i ` ー '" iヽ | / ヽ / / | ! / / | | | .l. i ..──|ヽ ヽ/─==i─Y-(_ノ──i二i───(⌒) ___ヽ /ヽノ └-┘ ┴ ..└┘ . ̄ | ___ i
477 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 01:59:18 ] ∩___∩ |ノ⌒ ⌒ ヽ / ●) ●) | Let's | ( _●_) ミ Haskell♪ 彡、 |∪| 、` / ヽノ ヽ / 人 \\ 彡 ⊂´_/ ) ヽ__`⊃ / 人 ( (_ノ (_)
478 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:00:25 ] A B ∩___∩ /) | ノ ヽ ( i ))) / ● ● | / / | ( _●_) |ノ / 彡、 |∪| ,/ / ヽノ /´ ここにオブジェクトAとオブジェクトBがあるクマ
479 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:02:12 ] A → B ∩___∩ | ノ ヽ / > < | じつはAさんはBさんを好きなんだクマ | //// ( _●_) ミ 彡、 l⌒l ノ / __ \ \ヽ . (___) \__)
480 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:07:27 ] ∩___∩ | ノ ヽ / ● ● | と、いうように | ( _●_) ミ ある対象とある対象がなんらかの関係をもっていることを 彡、 |∪| 、`\ 圏論では「射」と言うクマ / __ ヽノ /´> ) (___) / (_/ | / | /\ \ | / ) ) ∪ ( \ \_)
481 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:09:55 ] ∩___∩ | ノ ヽ A → B / ● ● | | ( _●_) ミ この場合、Aさんを「ドメイン」、Bさんを「コドメイン」と言うクマ 彡、 |∪| 、`\
482 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:15:49 ] ∩___∩ | ノ _, ,_ ヽ / ● ● | 別にBさんを好きじゃなくてもいいんだクマ | ( _●_) ミ Bさんを嫌いでもいいし 彡、 |∪| ノ BさんはAさんの嫁でもいいし ⊂⌒ヽ / ヽノ ヽ /⌒つ AさんがBさんをレイ-プする、という関係でもなんでもいいクマ \ ヽ / ヽ / \_,,ノ |、_ノ
483 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:19:20 ] ∩___∩ | ノ ヽ / ● ● | A → B | ( _●_) ミ ココ!! 彡、 |∪| 、`\ / __ ヽノ /´> ) この図では「→」がAさんとBさんの関係を表してるクマ (___) / (_/ 関係というものには方向性が付き物なんだクマ | / | /\ \ この「関係を表した矢印」こそが「射」クマー! | / ) ) ∪ ( \ \_)
484 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:20:05 ] てらわかりやす
485 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:21:35 ] まだまだ続クマ? \  ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ (´´ \(⌒-⌒) o (´⌒(´ (・(ェ,,)・ )つ⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
486 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:40:43 ] / ̄) ∩____∩. | | AさんからBさんへの「射」は1つとは限らないクマー! | ノ ヽ.| | / ● ● || | くニ} {fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj「好き好き射」 | ( _●_) .ミ | 彡、. |∪| | くニ} {fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj「エロエロ射」」 / ,へ  ̄ ̄`ヽ / / \ t──┐ | (__/ > ). | |_ / / (___) ( \ \__)
487 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 02:56:02 ] 、 l _, ヽ/⌒ヘ~ ., 't,_,ノ丶 ∩、 ∩ / ! '` | '──-' '\ ,/ ● 'i, / ( _●_) ● i, 彡 しノ ミ あたまをやわらか〜くするクマ〜 |`:、\ 'ii __,/ 'i、 ̄~~ ij 乙__ノi ^-ァ __,ノ r^~"i' 'l !、 ! l ~^''!, ,_ ,!_ \ l,~^''‐--::,,⊃ ) ) ) ) `'‐’
488 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:02:26 ] X Y Z ∩___∩ /) | ノ ヽ ( i ))) / ● ● | / / | ( _●_) |ノ / 彡、 |∪| ,/ / ヽノ /´ ここにオブジェクトXとオブジェクトYとオブジェクトZがあるクマ
489 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:06:57 ] ∩____∩ / ヽ X → Y YさんはXさんのいとこクマ / ● ● | Y → Z ZさんとYさんのいとこクマ | ( _●_ ) ミ 彡、,, |∪| / /__ ヽノ l\ (___u) (uニ ).  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
490 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:09:49 ] |::::::::::::::::::::::::::::::: |" ̄ ゙゙̄`∩:::::::::::::::: |,ノ ヽ, ヽ::::::::::::::::::::::::: X → Y |● ● i'゙ ゙゙゙̄`''、:::::::::::::::: | (_●_) ミノ ヽ ヾつ:::::::::: ↓ | ヽノ ノ● ● i:::::::::: {ヽ,__ )´(_●_) `,ミ::::::: Z | ヽ / ヽノ ,ノ:::::: あれ?XさんとZさんは・・・いとこ?
491 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:17:59 ] ∩─ー、 / ● 、_ `ヽ / ( ● ● |つ | /(入__ノ ミ 所詮、XとZが 、 (_/ ノ いとこだろーと、はとこだろーと \___ノ゙ 関係ないのさ・・・ / 丶' ⌒ヽ::: / ヽ / /::: ただひとつ言えることは / /へ ヘ/ /::: XからZへのなんらかの関係があるかもしれない / \ ヾミ /|::: ってことだ (__/| \___ノ/::: / /::: これを圏論では射の「合成」と呼ぶ / y )::: / / /::: / /:::: X → Y / /::::: ( く:::::::: ↓ |\ ヽ::::: | .|\ \ ::::: Z \ .| .i::: \ ⌒i:: \ | /:::: ヽ 〈:: [XからZへの矢印が考えられる] \ | i:::::: (__ノ: __ノ )::::: (_,,/\
492 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:19:52 ] | |.-──-、 | : : : : : : : : \ |: : : : : : : : : : : ヽ |-…-…-ミ: : : : :', | '⌒' '⌒' i: : : : :} | ェェ ェェ |: : : : :} | ,.、 |:: : : :;! どこで出ていこうかな・・・・・ | r‐-ニ-┐| : : :ノ |! ヽ 二゙ノ イゞ‐′ | ` ー一'´丿 \ | \___/ /`丶、 | /~ト、 / l \
493 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:50:43 ] ,..-──- 、 /. : : : : : : : : : \ 関数Xは /.: : : : : : : : : : : : : : ヽ クラスYを引数にする ,!::: : : :,-…-…-ミ: : : : :', X(Y) {:: : : : :i \ / i: : : : :} ちなみにYは {:: : : : | ェェ ェェ |: : : : :} 合成のほかの例え!! Zという属性を. , 、 . { : : : :| ,.、 .. |:: : : :;! 持っている ヽ ヽ. _ .ヾ: :: :i r‐-ニ-┐ .| : : :ノ } >'´.-!、ゞイ! ヽ二゙ノ イゞ‐′ | −! \` ー一'´丿 \ ノ ,二!\ \___/ /`丶、 /\ / \ /~ト、 / l \ / 、 `ソ! \/l::::|ハ/ l-7 _ヽ
494 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:52:45 ] _ /- イ、_ __ /: : : : : : : : : : : ( 〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ 〈⊃ } {:: : : :ノ --‐' 、_\: : ::} ∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::} | ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ / ● ● | / ,,・_ | //  ̄7/ /::ノ | ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/ 彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ / __ ヽノ / / // |//\ 〉 (___) / / // /\ / わかりづらいクマ
495 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:10:53 ] _ /- イ、_ /: : : : : : : : : : : ( /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ; 関数X → クラスY .{:: : : :ノ --‐' 、_\: : ::} .{:: : :ノ ,_;:;:;ノ、 ェェ ヾ: ↓ .l: :ノ /二―-、 |: ::ノ.. | //  ̄7/ /::ノ 属性Z . 〉(_二─-┘{/ /、//|  ̄ ̄ヽ わかんないかなコレ・・・
496 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:14:39 ] class X { method( Y ) {} } class Y { Z z; } class Z {}
497 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:38:27 ] \ i / ─── ・ ── ← ヌッケ  ̄ 二─ _ // | \  ̄ 、 - 、 / / | -、\ \ / / \\ \ / \ヾ ヽ ヽ / \ ヾ、 | i クマソッ // |! `i | /// | | / ( | | <_,へ 丶-、 | | __●_ rm \ \ |! リ | / ヽ-'⊇) ̄`ヾ │ / | | ⊂/ ● /\_,.-、 / / / / │ /\ / _/ / / // ⊂丿 ミ (⌒)  ̄ / / / \__ミ / / //_ / \_/ _二─
498 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:39:35 ] A → B → C H ↓ ↑ ↑ ↓ D E → F → J ↑ ↑ G H → I くまー r -、,, - 、 __ ヽ/ ヽ__ くまー ,"- `ヽ, / ● l ) / ● \__ (● ● i" __/ ●)  ̄ )"__ "`; .(_i ● ' __, '"  ̄`'(___/.i⌒i 丶_ ,i⌒i,,_(_/ ● i ̄ ̄ )_|__ __, '"  ̄ ヽ! ● ●) ミ~ ̄_● ヽ) くまー (_/ ● i ∪ / ⊂{● | くまー l ●( _●) (  ̄)- / -' i /ヽ、 |∪l T i ● '") くまー
499 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:43:17 ] i⌒i⌒i | ヽ / 人__ヽ∩ / / ヽ >>498 のように人間は人間同士いろんな関係をもってるクマ / / ● ● | 物事だってそうだクマ ( | ( _●_) ミ コレとかアレのいろんな関係で成り立っているクマ \ 彡、 |∪| ( \ ヽノ `ー´⌒\ \ /\ \、 \ / (  ̄) \ | ( ̄ ̄ ̄ ̄) \ ヽ/ / ̄ ̄ \__/
500 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 04:48:31 ] ∩___∩ / ノ \ ヽ | ● ● | 彡 (_●_) ミ /、 |∪| ,\ 複数の「対象」と複数の「射」の集まり , -‐- くJ( ヽノ ゝ-rr- 、、 ~~~~~~ ~~~~~ /Y ,r 、 `ー r'"^〃 、 つヒヽ これこそが「圏」 = 「カテゴリー」 ,ノ '^` i! =テミ i' 天ニ ミ、 ='"^ヾ } ,/ ''=''" ノ-‐'ヾ-人,,__ノnm、''::;;,, イ i! ,∠-―-、、 `ー'フヾ、 j 圏論(カテゴリー論)の基礎となるものだクマ f'´ ノし `丶、 ー=ミ-JE=- / ヾ=ニ- 彡^ 〃 ,,>、、`''ー-::,,_,,ノ ``ー--┬:, ''"~´フ ソ´`7'' ''"´ ,に (`゙゙´ノ f^ヽ ,ハ ,ィ' ,;-ゝ、 /ミ`ーt!,_,ィ-‐彡''"^ヽ / ヾ::::::::::::::::r''" ぃ ;} l t:::::::::::/ ノ / l! `'T7′ / /
501 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 05:06:35 ] 圏(カテゴリー) ┏━━━━━━━━━━━━━━━━━━━━━┓ ┃クマー クマー クマー ┃ ┃~~~~~~ ~~~~~~ ~~~~~~ ┃ ┃ ↑[神] ↑[神] ↑[神] ┃ ┃ [好き] [好き] . ┃ ┃ A君 → Bちゃん → . C君 ┃ ┃ ~~~~ ~~~~~~~~ ~~~~~ . . ┃ ┃ ↑[好き] ↓[爆破] ┃ ┃ . . [保有] ┃ ┃ . . D君 → フェラーリ ┃ ┃ ~~~~ ~~~~~~~~~~ ┃ ┃ ↓[ペット] . .┃ ┃ [同類] . .┃ ┃ヌッケ ← 犬 .┃ ┃~~~~~~ ~~~ . ┃ ┗━━━━━━━━━━━━━━━━━━━━━┛
502 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 05:16:08 ] 【まとめ】 ┏━┓ 射 ┏━┓ ┃.A.┃ → ┃.B.┃ ┗━┛ ┗━┛ 対象 対象 (ドメイン) (コドメイン) 上の図が基本要素 これが複数あつまり関係しあったものを圏という
503 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 05:20:23 ] ふぅ、つかれたクマー ∩___∩ | ノ ヽ ( ) / ● ● | ( ) __| ( _●_) ミ__ ( ) (_. 彡、 |∪| 、`__ )─┛ / / ヽ ヽノ /_/:::::/ |::::::::::| / ( ̄ ̄ ̄ヽ |:::::::| ̄ |::::::::::| |  ̄ ̄ヽ .ノ |:::::::| / / ̄ ̄旦 ̄ ̄ ̄ ̄ ̄ ̄ ̄/|/ /__________/ | | | |-------------------| |
504 名前:デフォルトの名無しさん [2007/02/25(日) 09:49:35 ] これは分かりやすいw
505 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 12:04:29 ] GJ!!
506 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 08:23:38 ] >>502 それがちょっと違う。 たとえば A → B → C という2つの射があったときに ここでA → Cという上の2つの射の*合成*が定義されてなかったら圏にならない。 すべてのコドメインとドメインが一致する射の組について合成が定義される 場合について、その全体を圏と呼ぶことが出来る。 ↑のAAもがんばってくれw
507 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 19:20:21 ] オーム社から「クマでわかる圏論」マダー?
508 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 23:59:49 ] >>506 あー、なるほどね。そういう条件が必要だったのか。 Wikipediaのこの文章をみてちょっと理解しきれなかったんだな。 >圏 C についてその射(と射の合成可能性)だけでも全部わかっていれば、 >そのうちで恒等射になっているものが対象を示しているので著者によっては >上の公理を満たす射の集まりを持って圏と定義することもある。 恒等射ってのがなんなのかわからん。ググっても出てこないし! >>507 クマーとかを本に使って金もらうと炎上しそうだなw
509 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 02:24:05 ] クマーはGPLってことで
510 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 03:06:50 ] >>508 恒等射っていうのはドメインとコドメインが等しくて、 何回合成してもそれ自身と等しくなるような射。 圏のすべての対象について、一個ずつ恒等射があること が必要。逆に言うと、恒等射があるとそれに対応する 対象がちょうどひとつあるので、恒等射と対象は 1対1に対応している。(したがって、人によっては、恒等射を 対象そのものとみなすって言うのが↑の記事、、
511 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 03:15:03 ] >>510 冪等射と恒等射は別じゃないか?
512 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 04:11:06 ] あ、そうだわ、・・・集合の圏とかだと冪等射がたくさん・・・orz... だから、上の条件にプラスして、他の任意の合成可能な射 と合成して相手を変化させないという条件も必要。 ちゃんと書くと、 1:A→Aという射で他の任意の射 f:A→Bと合成して、f1=f g:C→Aと合成して、1g=g となるようなもの、・・・
513 名前:デフォルトの名無しさん [2007/03/18(日) 18:43:55 ] 臨時あげ
514 名前:デフォルトの名無しさん [2007/03/18(日) 18:46:41 ] ここで、Stringableの是非を議論すればいいのか?
515 名前:デフォルトの名無しさん [2007/03/18(日) 18:47:12 ] 馬鹿が本スレ埋めやがったな
516 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 18:47:46 ] 止めれw 次スレが立つまでの避難所ということで
517 名前:デフォルトの名無しさん [2007/03/18(日) 18:54:27 ] よく読むとアンチスレなのにまともな議論されてるなw
518 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 19:01:05 ] pc11.2ch.net/test/read.cgi/tech/1174211797/ 立てた。
519 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 19:07:59 ] >518 乙!
520 名前:デフォルトの名無しさん [2007/03/25(日) 15:03:44 ] 型が充実してるって言うから、ちょっと勉強してみたけど、 簡単に実行時例外が発生するじゃん。なんだよこれ。 コンパイルが通れば論理的な誤り以外、 ほとんどバグが取れてるのかと思ったのに。 実行時に読み込むデータとかの誤りなら仕方ないにしても、 そんなのない静的にすべて決まってるプログラムでも 実行時例外が起きえるなんて、全然だめじゃんwww
521 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 19:04:34 ] >>520 ボトムのことかな?
522 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:12:50 ] >>520 例外を起こす可能性のある関数を使わなきゃいいんじゃない? あるいは、もっと型の強い言語を使ったらどうよ。
523 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 21:53:28 ] 暗黙でも何でも良いから 関数毎の定義域に合ったサブタイプを作るとか、 なんとかならんのかね。 もっと型の強い言語ってどんなの?
524 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 01:54:12 ] Cじゃね。
525 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:33:01 ] Cほど型の緩い言語もないだろ。
526 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:43:07 ] Cは緩いけど硬直的
527 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 16:44:20 ] Dじゃね。
528 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 17:44:47 ] void*
529 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 23:35:13 ] 日本拳法が一番厳格だと思うよ
530 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 20:05:02 ] あんまり深く使い込んだわけじゃないけど 俺が出会ったランタイムエラーは パターンマッチの場合分けの漏ればかりだった。 型がらみで実行時エラーってでる可能性はあるの?
531 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 20:40:55 ] >>523 >もっと型の強い言語ってどんなの? 依存型のある言語とかじゃないか?実用化されてるのか知らんけど。 >>530 head []とかdiv 1 0とか。
532 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 20:45:02 ] 計算停止性を決定可能にした天才の>>520 がいると聞いて飛んできましたよ。
533 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 21:19:17 ] 依存型って型に普通の値を突っ込めるようなもの? とすると類に普通の型が混ざるわけ?
534 名前:530 mailto:sage [2007/03/27(火) 21:26:28 ] >head []とかdiv 1 0とか。 div 1 0は型エラーじゃないじゃん。 head []も型システムの責任なのかい? そうか 型に値域を限定する機能があればいいのか? div :: (Num a) (Num b:ただし0を除く) => a -> b -> a head :: [a] ただし[]を除く みたいな。 でもどうやっても静的にはチェックできそうにない orz
535 名前:デフォルトの名無しさん mailto:sage [2007/03/27(火) 21:59:15 ] {-# OPTIONS_GHC -fglasgow-exts #-} data ZeroT = ZeroT data SuccT a = SuccT data Nat n where Zero :: Nat ZeroT Succ :: Nat n -> Nat (SuccT n) data List a n where Nil :: List a ZeroT Cons :: a -> List a n -> List a (SuccT n) myhead :: List a (SuccT n) -> a myhead (Cons x xs) = x mydiv :: Nat n -> Nat (Succ m) -> {- ...型が書けねえ -}
536 名前:保守 mailto:sage [2007/05/26(土) 18:36:56 ] 破壊的代入を使ったら負けかなと思う
537 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:43:18 ] 勝ち負けを意識した時点で既にアンタ負けてるよ
538 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:19:22 ] >…負けてるよ って言ってるアンタも勝ち負けを意識してるんだから、負けてるよ。
539 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:32:17 ] 俺みたいな奴は勝つ必要なんてねえんだよ
540 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 21:02:25 ] 勝とうよ。haskellがあれば勝てるよ
541 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 00:08:21 ] けどHaskellって正直なところ負け組だよ
542 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 02:59:58 ] 関数型言語パスカル
543 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 03:24:30 ] >>543
544 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 03:25:27 ] >>544
545 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:16:38 ] ふつケル読んだけど、後半が理解できなかった。マジで難しい。 言語の設計の根っこがCPUの挙動にぜんぜん当てはめられていないからか、 俺には宇宙語だよこりゃ…。
546 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 21:36:33 ] 当てはめられないかもしれないが C言語もCPUの挙動に当てはめられるかというとそうでもない そもそもソフトウェア設計用だからな
547 名前:偉そうに語ってみる mailto:sage [2007/08/23(木) 01:19:28 ] >545 後半、モナドやWikiエンジンの開発のところは急に難易度が上がっているので、 それより前の部分を何度も読んで動かしていると感じがつかめてくると思います。 あとは、メモリとかスタックとか、効率のことを考えるのをひとまずやめて プログラムでどういうことをやりたいかを考えてみるのはどうでしょうか。
548 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 02:46:56 ] おまえ偉そうだぞ
549 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 01:14:22 ] えっへん
550 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 09:02:27 ] つ[龍角散]
551 名前:デフォルトの名無しさん mailto:sage [2007/08/27(月) 13:01:13 ] >>550 龍角散は「ゴホン!」だろ エヘン虫にはヴィックスドロップ。
552 名前:デフォルトの名無しさん mailto:sage [2007/08/28(火) 09:39:44 ] 高度すぎてわからなかった^^;;
553 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 23:11:49 ] クマーが圏論を語ってる、、、。
554 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 23:12:36 ] MLと比べてどうなの?
555 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 21:16:41 ] クマー落ち防止保守
556 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 02:30:14 ] ttp://2ch.bluesvirus.com/reserve/view/172
557 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:25:03 ] >>10 頭の中に同型対応になるものがたくさんあるってことだから 少なくともアホじゃないだろう
558 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:27:08 ] >>557 あの手の輩は「これは非直感的だからウンコ」て台詞の方が圧倒的に多いよ
559 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 00:28:42 ] 何この良スレ スレタイでスルーしてて後悔した
560 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 21:30:08 ] もっと活用できたらいいんだがなぁ・・・
561 名前:560 mailto:sage [2007/11/20(火) 21:31:14 ] >>560 560はスレのことね
562 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 07:32:07 ] sage
563 名前:デフォルトの名無しさん mailto:hage [2007/12/23(日) 03:41:42 ] ★
564 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 11:22:42 ] クマさんのArrow講義マダ?
565 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 13:33:30 ] arrow って命令型言語的なフローを書くための機構なんだよね?重要なの?
566 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:23:36 ] ぶっちゃけ>>8 が理解できなくて劣等感にさいなまれた。 でもHaskellをかじったら理解できた。 その経験からつまずいた点を書いてみる。 qsort [] = qsort (x:xs) = とqsortの定義が2つ並んでいるのが理解できなかった。 これはHaskellの階乗を見て場合分けだと理解した。 fact 0 = 1 fact n = n * fact (n - 1) int fact(int n) { if (n == 0) return 1; else return n * fact(n - 1); }
567 名前:566 mailto:sage [2007/12/29(土) 12:45:46 ] []が意味不明だった。 配列を[1, 2, 3]と書くと知って初めて空配列だと理解できた。 (x:xs)が意味不明だった。 他の部分で配列はすべて[]なのにここだけ()なのに違和感があった。 ()はfact(n-1)のn-1と同じでx:xsが一つの要素だとくくっていると解釈した。 この辺はC言語だとコンマで区切るような所が空白で区切られているため 意識しないといけない部分だというように感じた。 そして++が配列の結合だと覚えた上で、 x:xs とはxが要素でxsが配列で [x] ++ xs という意味だと解釈した。 qsort elts_lt_x ++ [x] ++ qsort elts_greq_x の構文木が初見でイメージできなかった。 演算子++の優先度が高いため A ++ B ++ C と3つの配列が結合していると解釈した。 C言語風にqsort(elts_lt_x) ++ [x] ++ qsort(elts_greq_x)と書いてあれば 初見でも自力で解釈できたかもしれない。 >>10 のいうように自分の知っているC言語に近いかどうかというバカの壁がある。 だからと言ってC言語を知らない人の方が先入観がなく理解しやすいとは思えないが。
568 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:55:10 ] >>567 [1,2,3]は配列じゃなくてリスト 配列とリストの違いはググレ
569 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:57:10 ] 文法を知らなきゃ理解できんのは当然だろ それから、細かいが、 >演算子++の優先度が高い 低い、の間違いだよな?
570 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:58:12 ] >>10 「自分が知ってるものと似てる」=メタファ 「見たら使い方がわかる」=アフォーダンス
571 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:58:27 ] 配列とリストなんて計算量が違うだけじゃん。 初心者は気にしなくていいよ。
572 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:00:14 ] >>571 だったらお前はmalloc,freeひたすら繰り返してろ
573 名前:566 mailto:sage [2007/12/29(土) 13:01:50 ] >>569 小学校で1+2*3のとき+より*の優先度が高いと習ったと記憶していますが これはひょっとして大間違いですか?
574 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:03:26 ] >>573 どこに+と*が出てきてるんだ?
575 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:05:15 ] >>573 もし(++)の優先度が関数適用より高いなら、 qsort elts_lt_x ++ [x] ++ qsort elts_greq_x は、 qsort (elts_lt_x ++ [x] ++ qsort) elts_greq_x と解釈されるはずだよ。
576 名前:566 mailto:sage [2007/12/29(土) 13:07:20 ] >>574 Haskellとは関係なくて「優先度が高い」という言葉の定義の確認で、 +と*を比較すると*が優先度が高いという言い回しが正しいかどうかです。 >>575 すみません、それ以前のレベルで、 優先度という言葉の定義があやふやでした。 よく考えたら++の優先度が低いという意味が理解できました。 1+2*3で+は後で計算していますがqsortでの++もそれと同じですね。 混乱してしまってごめんなさい。
577 名前:566 mailto:sage [2007/12/29(土) 13:14:41 ] >>568 ご指摘ありがとうございます。 日本語のHaskell本を2冊とも買ったのでよく勉強します。 >>569 それはそうなんですが、自信たっぷりな>>8 の書き方を見て、 普通の知能の人間なら文法も含めて推測できるはず それができない俺はアホだ。 という劣等感を感じたんです。 色々とつまずきましたが、読み方が分かるようになると、 Haskellのインデントの文法はとても美しいと感じられるようになりました。 今まで好きだったPythonが糞に思えてきました。
578 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:18:42 ] >>577 haskellのインデント(レイアウトのことかな)が美しいと思うのは自由ですが、 ちょっと偉い人の間では嫌っている人もかなりいます
579 名前:566 mailto:sage [2007/12/29(土) 13:26:18 ] >>578 はい、レイアウトのことです。 もしお手数でなければ参考までに嫌われている理由をお聞きしたいです。 Pythonのインデントだとコピペの際にずれを直すのが鬱陶しいと思いました。 C言語だとずれていても無視できて、後で自動整形できますからね。
580 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:24:52 ] >>579 たとえばcaseの中にcaseがあって、それがレイアウトで書かれていると、 インデントが少しずれただけで全く意味が異なる式になってしまうことがあったりするから。 だからhaskellにはブロックで書くこともできるからレイアウトを使わなくても良い。 でもレイアウトが崩れても一つの解釈しかできないところならレイアウトで書いたほうがきれいかもしれないね。
581 名前:566 mailto:sage [2007/12/29(土) 20:28:26 ] >>580 なるほど。 レイアウトはExcelで書くのに向いているかもしれないと思いました。 そういえば副作用がない関数型のイメージをワークシートに例えた解説を どこかで読んだのを思い出しました。 ところでqsort elts_lt_x ++ [x] ++ qsort elts_greq_xの演算子の件ですが、 単純に左から右にパースして優先度は関係ないのではないかと気付きました。 静的に型付けされているため、qsortの引数は1つしかないと決められるからです。
582 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 21:35:33 ] >>581 ヒント: カリー化
583 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 21:38:18 ] 関数型言語初心者はマジでMLかOCamlから始めろよ いきなりHaskellやったってわからねーだろ。
584 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 22:04:56 ] つ「Haskell The Craf tOf Functional Programming」 ↑大学の教科書になってるHaskell使ったプログラミング自体の入門書だから いきなりやってもわかるようにできてる この本だとモナドが最後のほうになるまででてこないから ふつうのHaskellプログラミングと併読してもいいやも
585 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 22:16:31 ] SML とか OCaml は(頑張れば宣言的に書く事も可能な)手続き型言語だからね 「副作用も何のその。非正格性なんて、速度を犠牲にしてまで要らないよ。 主題はメタランゲージなんだから、関数型言語なんてレッテルを貼らないでおくれ。」 という世界。
586 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 23:51:39 ] >>585 というか、CAML開発の時点で「妥協の産物」と開発者自らが語っている。 その後継のOCAMLでレッテル貼る貼らないとか以前の問題。 その点、SMLはHaskellと同じで純粋培養した関数型っていう感じがする。 NewJergyとかいいな。 でもあえてGauchを薦めてみるw Lisp/Scheme Familyは楽しいぞ。古きを尋ねて新きを知るという感じかな。
587 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:13:17 ] SchemeならMonaがアツい OS開発も一緒に楽しめて一石二鳥
588 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:24:56 ] >>586 ×Gauch ○Gauche
589 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:27:19 ] >>587 Reading Gaucheなんてのをやってるな ttp://wiki.monaos.org/pukiwiki.php?Reading%20Gauche
590 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:29:24 ] Scheme は R6RS が好きになれん...
591 名前:566 mailto:sage [2007/12/30(日) 00:45:12 ] >>582 qsortが単独で切り出されてC言語でいう関数ポインタみたいなものとして 扱われないという事実をどう解釈するかということでしょうか? 確認実験をしてみました。 inc n = n + 1 add a b = a + b inc 2 + inc 5 → 9 (+がincより低い) add inc 2 inc 5 → エラー (addとincが同列のため) add (inc 2) (inc 5) → 9 (明示的に差をつける) もし++が同列なら以下の記述を強制されそうですね。 (qsort elts_lt_x) ++ [x] ++ (qsort elts_greq_x) 括弧なしのポーランド表記とは違うのだと理解しました。 >>583 はい、しょっぱなのクイックソートからつまずきました。 実はHaskellの前に英語の本を買ってF#をやっていたんですが、 C#とパラダイムが違うという実感が湧きませんでした。 C# 3.0でラムダ式を使えばF#いらないなー、みたいな。 そんなとき、Haskellのレイアウトが美しいと気付いたんです。
592 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:53:15 ] 関数型を使うならcurryingとmonadぐらいは理解してないと使いこなせないんじゃないかな。
593 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:02:58 ] 式が二つ並んでいたら関数適用になるってことはわかってるかな C っぽく書くと inc 2 + inc 5 → +(inc(2))(inc(5)) add inc 2 inc 5 → add(inc)(2)(inc)(5) add (inc 2) (inc 5) → add(inc(2))(inc(5))
594 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:38:25 ] >>591 あなた、一度でもリファレンスに目を通しましたか? 最初から最後まで一読してから、わからないことがあれば質問してください。
595 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:39:04 ] 幸運なことに、リファレンスは日本語化されています。
596 名前:566 mailto:sage [2007/12/30(日) 01:41:46 ] お騒がせしてすみません。 自分にHaskellは無理のようです。 色々と教えていただいてありがとうございました。
597 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:48:44 ] アンチを増やしてどうするw
598 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:51:30 ] この程度で挫折するようなカスのことなぞ知らん
599 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:52:27 ] rubyコミュの二の舞はごめんだからな。
600 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:05:39 ] Haskellユーザが増える→Haskellコミュの質低下→Haskellユーザ全体の技術力低下→オブジェクト指向化→Haskellはオブジェクト指向と親和性が低い→Haskellはダメ言語→Haskellコミュ衰退→乙
601 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:07:20 ] Haskell衰退の他のシミュレーションよろ
602 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:10:02 ] >>601 お前566だろ? さっそく門前払いを逆恨みか
603 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:15:32 ] >>600 オブジェクト指向化したのがConcurrent Cleanじゃね?
604 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:24:04 ] 関数型初心者はカリー化・モナド・遅延処理ぐらいまで理解してから始めてホスイ。 Cみたいなeager evaluationとHaskellみたいなLazy evaluationでは違うのだよ。
605 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:24:39 ] >>603 それは勘違い
606 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:24:46 ] >>603 いやOZだ。
607 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:33:52 ] 急にスレが伸びてると思ったら基地外が暴れてたのか
608 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:52:45 ] 冬だな
609 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 09:30:40 ] スレタイどおりの糞オナニー言語ですな
610 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 10:47:28 ] rubyは原理主義者がウザい
611 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:03:29 ] >>610 原理主義って・・・もともとrubyは学者でもない一プログラマが実用主義の下に作った言語だろ? rubyの原理主義とはなんだ?
612 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:04:34 ] 自分の胸に手を当ててみ
613 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:05:09 ] 貧乳がありました
614 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:06:55 ] ツルペタょぅι゛ょキタ━━━━(゚∀゚)━━━━!!!!
615 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:00:47 ] >>585 >「副作用も何のその。非正格性なんて、速度を犠牲にしてまで要らないよ。 >主題はメタランゲージなんだから、関数型言語なんてレッテルを貼らないでおくれ。」 非正格性=non-Strictness=Lazyness わざわざ非正格性なんて判りにくい言い方をするのモナーw
616 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:06:28 ] 専門用語使うのがかっこいいと思ってる初心者さんなので許してあげてください。
617 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:15:22 ] 「正格性」の反対語なんだぜ!って感を表現したかったんじゃないの 怠惰性とか遅延性って表現はなんか違和感が
618 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:26:53 ] そんなどうでも良い所を突っ込まれるとは思わなかった…
619 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:27:19 ] 電子工学から入った俺にしてみれば、副作用なしの関数の方がはるかに直感的だったよ。 習い始めのころでもC言語は別に難しくはなかったが、新しいことを学ぶ気持ちだった。 関数型言語で初めて今まで培った勘が役に立った感じがする。 本来のオブジェクトって言ったら抵抗とかコンデンサとかみたいに副作用がないもののはずなんだがなぁ。 なんでオブジェクト指向って言葉が根付いたのが手続き型言語の世界なんだろう。 いや、歴史的経緯は知ってるけど、納得できない。
620 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:39:19 ] >>618 研究者の端くれなら尚更判りやすい表現を心がけるべきかと
621 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:41:16 ] >>620 なんで研究者だと思うんですか?
622 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:52:21 ] >>619 >なんでオブジェクト指向って言葉が根付いたのが手続き型言語の世界なんだろう。 関数型ではファンクターで抽象化できるからオブジェクト化が必要とされることがあまりなかったから。 手続き型では抽象化の方法がオブジェクト化に求められたが、これを関数型にポートする際にオブジェクト指向の関数型が必要とされた。 手続き型で蓄積された資産がすごい勢いでオブジェクト指向の関数型OCAMLにポートされつつあるからM$もF#を出す気になった。 こういった資産のひとつがOCAMLのocsigen。OCAML版Ruby on Railsのパクリ。 他にも、GaucheのKahuaもそれ系。 これらが関数型の世界でどんな進化をするのか興味深い。
623 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:58:15 ] F#はファンクターが無い訳だがw
624 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:01:39 ] Apple=>Ruby/Objective-C Micro$oft=>F#/Visual-??? Unix=>Gauche/Haskell/etc
625 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:03:43 ] >>624 いいえ、 Unixは終焉までずっとC言語です。
626 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:09:22 ] >>625 Cはどのプラットフォームでも使うアセンブラ的なポジションになってると思う。
627 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:16:40 ] 妥協の産物=>Perl/Ruby/OCaml 理想主義者=>Squeak/Haskell 現代の化石=>C/Lisp/Fortran/COBOL
628 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:21:59 ] COBOL?まだ使ってるところあるの?もう全部Javaになったかと思った。 Fortranは物理の世界では現役バリバリです。 Lisp・・・うーん
629 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:29:20 ] 市役所勤務の知り合いがいうには 優秀なやつはシステム課に回されてコボルやらされるらしいですよw
630 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:30:36 ] Perl<=Larry Wall Ruby<=Matz OCaml<=INRIA Squeak/Smalltalk<=Xerox Park(Allan Kay) Haskell<=Bastiaan Heeren、Daan Leijen、Arjan van IJzendoorn C<=K&R Scheme<=Guy Lewis Steele Jr.、Gerald Jay Sussman Fortran<=John Warner Backus COBOL<=CODASYL
631 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:33:05 ] つ「お題 プログラミング言語の父と呼ばれるのは誰?」
632 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:57:01 ] チャールズ・バベッジ
633 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:19:25 ] 階差機関(difference engine)は世界初のプログラム可能な計算機と云われています。 では、どのようにプログラムしたのでしょう?
634 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:34:42 ] >>631 まつもとゆきひろ
635 名前:デフォルトの名無しさん [2007/12/30(日) 21:54:11 ] 超良スレ保守
636 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 23:14:14 ] プログラミング言語の父といえばシェーンフィンケルとHaskellだろう。1920年代のコンビネータ論理(Combinatory Logic)だ。 シェーンフィンケルが考案し、Haskellが開発した。 その仕事が1930年代のチャーチとクリーネによるメタ言語としてのλ算法の業績につながった。 そしてその後1954年にIBMのバッカスが最初の高級言語FORTRANを作る。 こういう歴史の直系だから、言語としてのHaskellが研究志向が強いというのもうなづける。
637 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 23:22:30 ] カリー・ハワード同型対応なくしてプログラミング言語など存在し得ない。
638 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 23:40:29 ] >>619 そもそも、プログラミングパラダイムとしてのオブジェクト指向というのが 「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。 本質的に「状態」を持たない関数型の世界にオブジェクト指向が入り込む余地はそもそも無い。 あと、細かいことだが >本来のオブジェクトって言ったら抵抗とかコンデンサとかみたいに副作用がないもののはずなんだがなぁ。 コンデンサってのは電荷をためて(状態変化)それを放電する(これも状態変化)ものでないかい? 微分方程式ばかり相手にしてると忘れがちになりかねないけれども、コンデンサは確かに「状態」を持つよ。 抵抗のことはよく分からんが。 >>622 >これらが関数型の世界でどんな進化をするのか興味深い。 「純粋関数型」を標榜するHaskellとはオブジェクトは相容れないし、 OCAMLでもコード中、オブジェクト機能を使ってる部分は、「関数型っぽく」はならないだろ? オブジェクトが関数型の世界でどうなるか、という興味は無意味だと思うね。 オブジェクトの世界と関数型の世界とがどう棲み分けて共存していくか、ならわかるが。
639 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 23:59:13 ] >>638 オブジェクト指向と関数型が共存することでこういったことが出来ればいいなぁという要求は出てくると思う。 これまでの言語の発展だってそういうことから出てきてる。 この部分は相容れないけどこれは一緒にするとこんなことが出来るというのが実装上の工夫のポイントだと思う。 君には無意味かもしらんが。
640 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:35:57 ] Y コンビネータ (fixpoint のことを Y コンビネータと呼びます。) data X = PsiInv (X -> (Int -> Int)) psi :: X -> (X -> (Int -> Int)) psi (PsiInv f) = f fixpoint :: ((Int -> Int) -> (Int -> Int)) -> (Int -> Int) fixpoint g = let h y = g (\x -> psi y y x) in h (PsiInv h) f :: (Int -> Int) -> (Int -> Int) f g n = if n==0 then 1 else n * g(n-1) factorial :: Int -> Int factorial = fixpoint f -- factorial 10 == 3628800
641 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:48:19 ] >>638 >そもそも、プログラミングパラダイムとしてのオブジェクト指向というのが >「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。 ハァ?www
642 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:51:09 ] >>638 >「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。 どーでもいいがデータ構造とアルゴリズムを纏めるんじゃなかったかな? 状態云々は結果的にそういうプログラミング手法が出てきただけで本質的にはあんまり関係ないと思う。 まあHaskellの代数的データ型は型とデータ構造を対応付けて 型についてアルゴリズムを書くから、データ構造とアルゴリズムはほぼ完全に分離してるといえるかもしれない。 これはこれで結構分かりやすくていいシステムだとい思うんだけど、 たとえば型クラス便利だけどインターフェイスみたいにガンガン作る気にならないっていうか、 そういう細かいあたりがめんどくさくなってる気がする。 そういうのをオブジェクト指向で何とかできないものかとか思ったり。これは俺の浅知恵だけどね。 あと、細かいことだが >コンデンサってのは電荷をためて(状態変化)それを放電する(これも状態変化)ものでないかい? それは「副値」的なパラメータが存在するだけで実際にそれを「副作用」として実装するかはプログラマ次第では? というかHaskellだったら普通にモナドで表現できるもんだと思う。 実世界での対応で考えると、ある力を外力と考えることも出来るし、より大きな系の内力と考えることも出来る程度の違い。 状態が存在するかどうかはどういう切り口で物事を見るかに依存している、と思う。
643 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 23:00:40 ] オブジェクト指向と関数型が共存できないという風評は日本だけ。 どこが発信源かは知らないがこういうことが普通に受け容れられるようになったんだなぁ。 ゆとり世代が言ってるんだろうか?
644 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:04:56 ] プログラミングに関する珍発言がまかり通るのは、日本では昔からの伝統です。 C言語が関数型言語であるとか、インタプリタはちょっとずつコード生成して実行する 処理系であるとか。
645 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:23:29 ] 後者は国の問題じゃなくマーケティングの問題でそ
646 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:47:14 ] 関数型のCAMLがオブジェクト指向を取り入れてObjective CAMLになったように、VBがλ算法を手始めに関数型を取り入れても不思議はないと思う。 VBの互換性を問題にしてる人は参照透過性とか副次作用とかを気にしてるんだろうか。OCAMLだってあまり考えずに代入とか使えば問題があるのは同じだと思うけど。 むしろOCAMLerがVBを使うときに便利だと思うけどなぁ。
647 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:49:18 ] それとも、OCAMLとHaskellでは全く違うということを問題にしてるんだろうか。
648 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:55:06 ] 日本以外ではマルチパラダイムでお祭なのに >オブジェクトが関数型の世界でどうなるか、という興味は無意味だと思うね。 >オブジェクトの世界と関数型の世界とがどう棲み分けて共存していくか、ならわかるが。 こういうことを周りに認めさせようとする日本人は多いんだろうなぁ。
649 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 15:43:07 ] プログラミングする人はいっぱいいても言語を考える人が少ないんだよ
650 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:00:40 ] まるちぱらだいむだうゎあい、って日本で竹内先生とかが頑張ったのは 世界の先を行ってたと思うんだけどな。 旧帝大-早慶-電電&電機メーカ研究所レベルの研究の浸透拡散がうまく いかんのはどこかに構造的な問題があるんかね?
651 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:07:41 ] >>648 別にお祭りというほどでもありませんが。 単に研究ネタがなくなったから今主流のオブジェクト指向と組み合わせてみよう、 って思ってるだけじゃないの。
652 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:11:25 ] >>648 > こういうことを周りに認めさせようとする日本人は多いんだろうなぁ。 特定の環境にこり固まって極めちゃった悪い意味での職人型なプログラマとかにありそう。 そういう先輩が職場にいて、適切なフォローを入れる人がいなかったりすると、新人は悲惨だね。
653 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:23:02 ] >>640 SKIコンビネータのことをまとめてるHPを発見したので報告。 ttp://ls-al.jp/blog2/item_343.html ソースコードはこっち。 ls-al.jp/blogarchives/CompileToCombinators.hs なぜかYコンビネータはないけどY=SLLだからすぐに作れるね。
654 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:43:45 ] >>638 みたいなMythに対しては古くからこういう有名な言葉があるんだが、 "Doing encapsulation right is a commitment not justto abstraction of state, but to eliminate state oriented metaphors from programming." Alan Kay, Early History of Smalltall
655 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:44:47 ] ○Smalltalk ×Smalltall
656 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:12:45 ] Haskellはオブジェクト指向じゃないけど型クラスを使えるから準オブジェクト指向関数型言語とでも言えるのかな。 「型クラス」と「型構築子クラス」でオブジェクト指向っぽく使えて、副作用がないようにモナドやその一般化のアローが使える。 オブジェクト指向と関数型が共存出来ないと言いながらHaskellを使っている人は分裂気味なんじゃないでしょうかね。
657 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:23:03 ] いや、Type Class と、オブジェクト指向の「クラス」は別物な訳だが
658 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:26:07 ] >>657 だから『準』と言っている訳だが
659 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:30:37 ] 「準」とかで片付けるとかどんだけwwwwwww ばか
660 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:38:26 ] で>>659 さんは別物のクラスだとどういうことが言えると言いたい訳かな? ご高説を是非御拝聴いたしましょう。
661 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:44:34 ] どんだけwwwwwばか 関数型とオブジェクトなんざ共存出来ねんだよ。 無意味、無意味。無駄無駄無駄wwwwww
662 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:47:28 ] Haskellerはオブジェクト指向もわからないばかということですか。ああそうですか。
663 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:49:37 ] 残念な展開だね。
664 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:57:51 ] >>656 arrow使いにくい まるでbrainf*ckみたいに見える 結局は普通に書いたほうがきれいだ
665 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:13:14 ] 「普通」とかで片付けるとかどんだけwwwwwww ばか やっぱHaskellerってのは池沼だね。
666 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:20:23 ] -- A Simple Brainfuck Interpreter import System.Environment -- Parser data Command = Inc | Dec | Next | Prev | Put | Get | While [Command] deriving (Show, Eq) type Program = [Command] parse :: String -> Program parse s = program where (program, "") = parse1 s parse1 :: String -> (Program, String) parse1 "" = ([], "") parse1 (']':xs) = ([], xs) parse1 ('[':xs) = (While cmds1 : cmds2, rest2) where (cmds1, rest1) = parse1 xs (cmds2, rest2) = parse1 rest1 parse1 (x:xs) = (parse2 x, rest) where (cmds, rest) = parse1 xs parse2 :: Char -> Program parse2 '>' = Next : cmds parse2 '<' = Prev : cmds parse2 '+' = Inc : cmds parse2 '-' = Dec : cmds parse2 '.' = Put : cmds parse2 ',' = Get : cmds parse2 _ = cmds
667 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:22:21 ] type Tape = ([Char], Int) tape0 = (['\NUL', '\NUL'..], 0) :: Tape getCell :: Tape -> Char -- Get value of current position getCell (cs, i) = cs !! i setCell :: Tape -> Char -> Tape setCell (cs, i) c = (take i cs ++ (c : drop (i + 1) cs), i) inc, dec, next, prev :: Tape -> Tape inc t = setCell t (succ $ getCell t) dec t = setCell t (pred $ getCell t) next (cs, i) = (cs, i + 1) prev (cs, i) = (cs, i - 1)
668 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:23:18 ] type Status = (Program, Tape, [Char], [Char]) step :: (Tape -> Tape) -> Status -> Status step f (c:cs, tape, inp, outp) = eval (cs, f tape, inp, outp) eval :: Status -> Status eval (Get : cmds, tape, (i:inp), outp) = eval (cmds, setCell tape i, inp, outp) eval (Get : _, _, "", _) = error "EOF" eval s @ (Put : _, tape, _, _) = (cmds, tape1, inp, getCell tape : outp) where (cmds, tape1, inp, outp) = step id s eval s @ (Inc : _, _, _, _) = step inc s eval s @ (Dec : _, _, _, _) = step dec s eval s @ (Next : _, _, _, _) = step next s eval s @ (Prev : _, _, _, _) = step prev s eval s @ (While cmds : cmds1, tape, inp, outp) = while (getCell tape) where while '\NUL' = step id s while _ = (cmds2, tape2, inp2, outp1 ++ outp2) where (_ , tape1, inp1, outp1) = eval (cmds, tape, inp, outp) (cmds2, tape2, inp2, outp2) = eval (While cmds : cmds1, tape1, inp1, outp1) eval ([], t, i, _) = ([], t, i, "")
669 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:24:49 ] run :: Program -> [Char] -> [Char] run cmds inp = outp where (_,_,_, outp) = eval (cmds, tape0, inp, "") main :: IO () main = do cs <- getContents args <- getArgs source <- readFile (head args) putStr $ run (parse source) cs -- brainf*ckなんてたったこれだけ。
670 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:35:01 ] >>665 お前は日常会話もできなそうだな
671 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:35:35 ] >>669 それをarrowでどうぞ
672 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:45:58 ] >>638 状態を持たないステートレスオブジェクトはそのまま純粋関数型言語に取り込めますよね。 「純粋関数型」を標榜するHaskellは状態がないのではなくモナドに閉じ込めています。 ステートフルオブジェクトの状態も同様にモナドに閉じ込める事で「純粋関数型」を 維持したままオブジェクトを利用できると考えますが何か問題があるのでしょうか?
673 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:56:27 ] >>672 >>664 >>671 でも書いたがarrowが使いにくいんだよ。brainf*ckみたいだろ。 brainf*ckを書き込んだ池沼にはわからねぇんだろうが
674 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:59:06 ] >>672 うんうん。Monadiusとかそうだよね。
675 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 19:14:19 ] >>670 で、「普通」の説明はマダァ?
676 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:14:22 ] , - ' ´ ̄ `` 、__ __,ィ ヽ. `ヽ. , '⌒Y / 、ヽ ヽ ヽ. / / i /l/|_ハ li l i li ハ . // 〃 /l i|j_,.//‐'/ lTト l、l j N i | {イ l / l li //___ リ_lノ lル' lハ. ソ ___◎_r‐ロユ i| /レ/l l l v'´ ̄ , ´ ̄`イ !| ll,ハ └─‐┐ナ┐┌┘ _ ヘ____ ハ| ll∧ハヽ ト、 '''' r==┐ '''' /l jハ| ll ll /./┌┘└┬┘└┼────┘ロコ┌i 〃 ‖ レ'¨´ヽiへ. _ 、__,ノ ,.イ/|/ ノ ll l| </  ̄L.l ̄ ̄L.lL.! ┌┘| ll ll { ⌒ヽ_/ } ー‐<.__ ′ l| ‖ ‖ ‖ ヽ, /、 〈 |:::::::| `ヽ ‖ ‖ {. ハ ヽ Y`‐┴、::::v l ‖ ‖ |iヽ{ ヽ_ゾノ‐一’::::ヽ. | ‖ ‖ |i:::::`¨´-- :::......:...:.:.::.}| ‖ ‖ |i::::::ヽ._:::_:::::::::::::::::::_ノ | ‖ ‖ |i::::::::::::i___:::::::::::/ | jj::::::::r┴-- `ー‐ '⌒ | 〃:::::::マ二 _,ノ //::::::::::::i ー 一 '´ ̄::. ,','::::::::::::::i::::::::::::::::::::::i::::::ヽ
677 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:14:38 ] >>675 それは658が一番詳しいから658に聞いてくれ
678 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:25:09 ] さんざ荒らして説明拒否かよw
679 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:28:47 ] えっ、だれが荒らし?
680 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:34:27 ] 池沼の「普通」なんて誰も興味ねえってよw
681 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:37:07 ] >>679 少なくとも>>676 はアラシだろw
682 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:28:20 ] >>677 ぐぐれYO!ばか ttp://d.hatena.ne.jp/r-west/20070720/1184946510 ttp://d.hatena.ne.jp/propella/20070807/p1
683 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:10:09 ] >>665 普通? 社会通念だよ。
684 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:10:54 ] 論文じゃあるまいし。 揚げ足取りなんかやってるから単位も危なくなるんだぞ?
685 名前:デフォルトの名無しさん [2008/01/05(土) 22:25:42 ] >>683-684 せっかくぐぐって終息させてやろうとしてるのに馬鹿だねおまえはw 黙ってれば終わったのに。 晒しage
686 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:27:36 ] これが関数型使って気取ってる池沼の実態ですwwwwww ばか
687 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:30:06 ] 使えもしないのに関数型に憧れてんなYO! Haskell使いキモスwwwwww
688 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:34:13 ] スレタイ通りのオナスレageんな
689 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:37:08 ] クソ言語が普通とか言ってんなよ。所詮、脳内オナニー。
690 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:39:26 ] 恥ずかしいスレ名をアゲんな、変体どもがぁ。 Haskellはプログラム板の恥だな。
691 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:43:34 ] スレの削除依頼出せ.キモイんだよお前等
692 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:46:01 ] まあ、重複スレなのでこちらを削除しても問題ありませんね。
693 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:57:22 ] ↑さんざん恥をかいたのでスレ削除して欲しい張本人がこう申しておりますw
694 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:59:01 ] Haskell使ってる人って頭が良いイメージだったけどw
695 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:01:32 ] なかなか笑わせてもらった
696 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:18:12 ] 「Haskell」=「Arrow」+「普通」
697 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:20:35 ] 普通ってwwww 「プログラム」=「データ構造」+「アルゴリズム」 ってWirth先生が言ってたぞ。
698 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:21:56 ] >>697 先生のゆーとーり世代
699 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:21:57 ] アローだってデータ構造だろうに。
700 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:23:22 ] 普通のアルゴリズムなんて定義できんだろ。
701 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:24:32 ] 普通のどこが気に入らないんだろう
702 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:25:43 ] アローに付随したアルゴリズムに定石でもあるのか?そんな本見たことねーぞ。 むしろ教えろゴルァ!
703 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:28:27 ] アローの定石と言えるかわからないけどバード先生の本には載ってる
704 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:35:36 ] Rahbi & Lapalme にはモナドの説明が無いけど、 Introduction to Functional Programming Using Haskell Richard Bird こっちには載ってるのか。
705 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:39:06 ] アロー程度がちょちょいと説明できないようじゃHaskell使いこなせてると言えないよね。
706 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:40:25 ] アローって簡単?
707 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:46:49 ] >>706 ふ・つ・う wwwww お頭が弱いとアローがbrainf*ckみたいに見えるらしいけど、可換図式みたいで判りやすいよ。 ハッキリ言って簡単。基礎的な数学力があればだけど。圏論ぐらいは出来ないと無理かな。
708 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:48:02 ] >>707 > ハッキリ言って簡単。基礎的な数学力があればだけど。圏論ぐらいは出来ないと無理かな。 どうやら、arrowでプログラミングしたこともないことがよくわかった。
709 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:55:34 ] アマゾンみたらバードの本にはモナドとかアローについて書いてあるらしい。 でも翻訳はMirandaについてでモナドとか載ってなさげだねぇ。
710 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:10:55 ] Arrowって、Kleisli 圏とか Premonoidal 圏みたいなもんか。たしかに図を描けばなんてことなさげ。
711 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:16:47 ] >>708 はいはい。あーarrowはむずかしいいや。brainf*ckみたいにみえるなあw
712 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:21:36 ] 教訓 ・ オブジェクト指向と関数型は共存出来ない。 ・ 「Haskell」=「Arrow」+「普通」 (ただしArrowはbrainf*ckである)
713 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:29:02 ] >>712 なにそれ?Haskell全否定じゃん。
714 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:31:52 ] 708は口調ですぐわかるな。アンチなら使わなきゃイイジャン。
715 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:51:13 ] アローって意味的にはモナドなんかよかよっぽど理解できるだろ。 要するに計算の合成を定義すればいいだけ。 フリーダムすぎて使い方を迷うところはあるけど……圏論の知識とかいるか?
716 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 00:59:29 ] >>715 いらない。
717 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 01:00:54 ] arrowでプログラミングするのに数学も圏論の知識も微塵も必要ない。
718 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 01:01:02 ] >>715 あれば簡単ってことなんじゃないの?おれ圏論知らないけどさw
719 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 01:03:26 ] >>715 アローってモナドの一般化したやつじゃん。ほとんど同じだろ。 アローが関数を受け持って、モナドが値を受け持つ箱みたいなイメージ。 違ったっけ?
720 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 01:07:59 ] >>717 それは極論だろ。SコンビネータとかBコンビネータとかYコンビネータを適用するとき副作用があるのか分からなくてドキドキする。 数学知ってたらこういうことがさらっと出来ていいんだろうなと思う。
721 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 01:10:19 ] Haskellじゃなくてもいいようなプログラムなら数学の知識はいらないとは言えるw
722 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 01:13:48 ] 結局、Haskellを何に利用しているかでアローの難易度も違って見えるんだろうね。
723 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 01:21:50 ] いらない・無意味・微塵も必要ない
724 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 01:28:42 ] 普通
725 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 04:40:35 ] arrow関連で卒論書きたいんですが、受けはいいでしょうか?
726 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 13:30:28 ] >>719 値を受け持つ箱と考えるより、monadic function(a->m b)の形式で計算を纏めていく戦略と考えたほうが 理解しやすいかもしれん。monadic valueそのものをモナドだと思ってしまうとよくわからんなるんじゃない?
727 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:41:27 ] >>717 ならこのスレに来るな。ここはクマーが圏論を説明してくれた偉大なスレだ。
728 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:44:29 ] >>720 数学の知識がなくてもSコンビネータとかBコンビネータとかYコンビネータが 何を意味しているのかだけ知っていればどきどきすることはありません。
729 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:54:07 ] >>728 意味が良くわからない。AAで説明してくれ。たのむわ。
730 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 16:07:19 ] /-─-,,,_: : : : : : : : :\ / '''-,,,: : : : : : : :i /、 /: : : : : : : : i ________ r-、 ,,,,,,,,,,、 /: : : : : : : : : :i / L_, , 、 \: : : : : : : : :i / 圏論持ち出したら /●) (●> |: :__,=-、: / < 負けかなと思ってる l イ '- |:/ tbノノ \ ニート(24・男性) l ,`-=-'\ `l ι';/ \ ヽトェ-ェェ-:) -r'  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヾ=-' /
731 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 16:26:09 ] >>730 博士課程のニーとですがなにか
732 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 16:39:00 ] 数学の知識無しでアローをAAで説明出来んじゃなかったの? しったかかw クマーktkr
733 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:23:29 ] スレの流れに 水を差すようで申し訳ないんだが ちょっと質問 >>720 にある「(対称)前モノイダル圏」って よく意味が解らない 対称モノイダル圏の条件を弱めたものらしけど 対称モノイダル圏だとなにか不味い事でもあるのですか
734 名前:733 [2008/01/06(日) 17:25:08 ] >>720 でなく >>710 だた
735 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:38:01 ] アローなんて簡単だろ ほれ、これがアローだ →
736 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:51:02 ] これの事でしょうか?ハァハァ /⌒ヽ⌒ヽ Y 八 ヽ ( __//. ヽ,, ,) 丶1 八. !/ ζ, 八. j i 丿 、 j | 八 | | ! i 、 | | i し " i '| |ノ ( i i| ( '~ヽ ! ‖ │ i ‖ | ! || | │ | | | | | | | | | | ! | | | | ‖ / ヾ
737 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:53:24 ] AA職人がいなくなってつまんなくなったね。
738 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:54:47 ] AA職人というか、コピペで説明してただけだろ?
739 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:57:34 ] その「説明してただけ」すら出来ないコピペ厨w
740 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:58:38 ] たしかに1年でレベルが落ちたのは否定できんなw
741 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 17:59:42 ] 単にスレが捨てられただけでは?
742 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 18:00:42 ] いまどきarrowなんてみんな知ってて、いまさら説明の余地もない。 新しいネタ探して来い
743 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 18:14:58 ] >>742 こら!みんなが矢印とかちんぽを無視したからって怒るでないw
744 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 18:17:28 ] クマーってもう一年前の話か。上のほう見たら2つもあるね。
745 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 18:19:22 ] >>742 ↑とアローの説明が出来ないクズが取り乱しております
746 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:27:48 ] >>728 コンビネータ理論を知っていれば十分で数学の知識を前提としないって?おいおい。 支離滅裂だぞ。
747 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:44:24 ] >>746 数学の基礎的な知識はそれほど必要ないだろ。 「それだけ」知ってればいいんだから。
748 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:55:31 ] >>747 基礎の意味が違うでしょ。コンビネータ理論は数学基礎論であって、数学の基礎知識じゃない。 しかも副作用についての知識は、いくつかのコンビネータを知ってるではすまない。 他にも山のようにある関数について、一つ一つ個別に知ってるよりも理屈を知ったほうが当然良い。
749 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:51:52 ] λλλλλ... ↑アロー・モナド・コンビネータ理論について行けず、肩を落として帰るプログラマの群れ
750 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:08:05 ] 正直arrowとかどうでもいい それよりhere documentを入れてくれ
751 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:29:30 ] >>750 ttp://cvs.haskell.org/Hugs/pages/users_guide/here-documents.html
752 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 20:07:34 ] >>733 くわしくはこのページが参考になる。 ttp://d.hatena.ne.jp/m-hiyama-memo/searchdiary?word=*%5B%A5%E2%A5%CA%A5%C9%5D John Power & Edmund Robinsonによれば: * TのKleisli圏C_Tがプレモノイド圏となる ⇔ Tは強度を持つ * TのKleisli圏C_Tがモノイド圏となる ⇔ Tは可換強度を持つ これはKleisli圏のプレモノイド構造と強度が1対1に対応しているということで、モノイド圏では都合が良くない。つまり、 プレモノイド圏となる⇒・・・⇒モナドの作用乗法 というのがwell-definedになるということを狙ってる。たしかにモナドって数学的な基礎知識無しでも使えると確信しましたか?
753 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 20:44:58 ] 当然だけど、アローについても同様の議論が展開できる訳です。まあ、アローなんかどうでも良いんでしたね。
754 名前:デフォルトの名無しさん [2008/01/07(月) 22:52:18 ] モノイド圏とモノイダル圏て何が違うの?
755 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 23:07:53 ] >>752 乙。>>710 あたりが言ってた図を書くって「ペースティング図、スタック図(Santiago graphical notation)、ストリング図で描く・・・」てことか。 おれも>>735 みたいなのをアローと思ってたw
756 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 23:13:13 ] >>754 Monoidal Category = モノイド圏 >>733 しかモノイダル圏という日本語は使っていないと思う。普通、モノイド圏と呼ぶ。
757 名前:デフォルトの名無しさん [2008/01/07(月) 23:44:59 ] >756 thx ところで、圏でのモナドは分かるんですが、 プログラム言語のモナドって何なんですか?
758 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 00:30:05 ] 検索しましたら次の資料が見つかり自己解決しました。 www.ipsj.or.jp/07editj/promenade/4703.pdf
759 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 00:33:47 ] >>757 ほい ttp://www.sampou.org/haskell/tutorial-j/monads.html HaskellのモナドはMonadという型クラスのインスタンスれす。 Monadクラスは2つのクラスメソッドを持っていて、その2つがモナド則(3ホーソクありゅ)を満たしてマース。 よく使うモナドはIO, Maybe, Listあたりでしょう。どれも「演算」を繋ぐという感じに使いマース。 この3行を見たらリンク先にJUMP! 2つのクラスメソッドは、最初のうちは『>>=』が『|』(パイプ)に対応、『return』が『cat』に対応すると覚えておけば良いかもネ! (Jonesはわざとパイプっぽくしたらしいネ) モナドの構文は3つ。doとletとifだけ。 演算をモナド的に定義して繋ぐと、新しい特徴を参照透過的にモナドに結びつけることが出来ちゃう。 しかもモナド則3が保証するように「組み立て順序が自由」で、長くつながったモナドの鎖のどこを切ってもモナドになるョ。 これがモナドがもたらすモジュール化という効能だよーん。
760 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 01:11:34 ] >759 おおDankeです プログラムにはなかなか深い数学が隠れているんですね。 いまふと思ったんですが、物理に出てくる量子化という 概念も、もしかするとモナドに関係あるかも知れません。 モジュラリティが何を意味するのかよく考えてみます。
761 名前:デフォルトの名無しさん [2008/01/08(火) 21:02:22 ] ここの説明もなかなかおもしろいよ。 blogs.dion.ne.jp/keis/
762 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:15:53 ] >>761 宣伝乙
763 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:40:15 ] >>759 doとletは分かるけど、ifってモナドと関係あったっけ?
764 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:36:51 ] >>761 説明が間違ってるところ大杉。 自分でモナドを作る時、どうするつもりかと思った。
765 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 23:45:48 ] >>763 do と if を一緒に使う話じゃないかな。有名な「一行で書け」ってやつ。
766 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 00:55:16 ] >>761 パクったはいいが、意味を理解してなかった、ってところか。
767 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 09:22:24 ] >>761 ってそんなに間違いが多いのか〜 どこからパクったのか分かりますか?
768 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 07:49:24 ] この年末年始のプログラマの休暇に ここのスレが結構盛り上がっていたな
769 名前:デフォルトの名無しさん [2008/01/13(日) 08:07:15 ] プログラマは休暇にHaskellの勉強か みんな偉いな
770 名前:デフォルトの名無しさん [2008/01/13(日) 10:35:26 ] どのへんがまちがってるの?
771 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:53:03 ] 勘違いしてるだけなんじゃない?
772 名前:デフォルトの名無しさん [2008/01/18(金) 04:18:25 ] なんだかんだ言って、本当はぜんぜん分かってない奴がほとんどだろw
773 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 09:45:24 ] まぁ仲間は多いと思っておきたいところだよな。
774 名前:デフォルトの名無しさん [2008/01/18(金) 15:35:54 ] >>761 の間違いを早く指摘して欲しいもんだなw
775 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 15:37:06 ] >>774 そういってPV稼ぐ魂胆だろ 自演乙
776 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:18:10 ] こんなとこで宣伝したところで何PV増えるというのか
777 名前:デフォルトの名無しさん [2008/01/19(土) 18:53:04 ] >>775 そうやって自分が理解できてないのを誤魔化そうって魂胆だろ。 まずは>>761 の間違いを指摘してみろよ。話はそれからだなw
778 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:02:10 ] ひとり暴れているのがいるみたいだね。誰も話したくないからって理解できないんだろうか。
779 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 13:31:52 ] いったいどこからパクったのか教えてくれよ。
780 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 13:54:12 ] >>779 どうでもいい
781 名前:デフォルトの名無しさん [2008/01/20(日) 18:21:29 ] どうでもよくないな。それによって>>761 が間違いかどうか判断できるだろ。
782 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:01:14 ] その判断がどうでもいいと言っているんだよ
783 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:35:14 ] 1/8を最後にパッタリ流れが止まったのはなぜかな?
784 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:41:46 ] ヒント 自演
785 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 04:24:11 ] 結局Haskellって遅いの?
786 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 22:55:28 ] >>785 perlよかハエーよ スクリプトに使うなら無問題 組込系にはちょっと シビアなタイミングが求められるとダメポ
787 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 05:51:47 ] >>786 >組込系にはちょっと シビアなタイミングが求められるとダメポ 組み込みはどんな感じのアセンブリコードが生成されるのか予測しやすいほうがいいと思うんだが、 Haskell使いが慣れてくるとどういうasm吐くか割と簡単に把握できるようになるの?
788 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 12:33:33 ] >>786 Perlよかはやいとか到底考えられないのだけど、その根拠は?
789 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:35:05 ] >>788 ttp://shootout.alioth.debian.org/sandbox/benchmark.php?test=all&lang=ghc&lang2=perl だと 14 対 1 で Haskell が速い
790 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:53:31 ] 動的型でバイトコンパイルのPerlと、静的型でネイティブコンパイルのHaskellを比較して Perlの方が速いと思うなら、そっちこそ説明が要るだろw
791 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:00:36 ] え〜Haskellって、ネイティブコンパイルしてるのか。それすら知らなかったわw インタプリタだとばかり思ってた。
792 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:10:08 ] 両方可能だがね
793 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:34:52 ] インタプリタあるんだ、知らんかった コンパイルしなくてもCGIとして使えるのかな 調べてみるか
794 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:39:19 ] あるかどうかは知らんが、可能ではあるだろう
795 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:44:38 ] runghcとかrunhugsとかあるけど、インタプリタをサーバに導入するほうが返って面倒な気もする
796 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 17:15:57 ] >>793 可能だよ
797 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:00:27 ] Haskellまだかじった程度だけど、参照透明性がなにかハッピーにしてくれるの? やろうと思えば、既存の言語でも出来るわけで。言語的に制約がかかっているか どうかでしょ。「言語的に制約がかかる」というのは、入門者にとってしかメリット はないよ。 遅延評価も*ほぼ*使わない。無限計算なんてやらんよ? こんなんで、なんで既存言語から乗り換えるの?俺が、まだHaskellよくわかっていない だけ?
798 名前:デフォルトの名無しさん [2008/02/16(土) 23:01:19 ] あげ
799 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:07:18 ] 俺も初心者だけど、参照透明性の重用性がよくわからない。 つか、結局はunsafeなんとかで参照透明性をくずしてんでしょ?
800 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:08:04 ] ちなみにクソリストなんて採用するのはやめてくれ
801 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:08:40 ] >>797 C++ が参照透明な言語だって知ってた?
802 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:10:00 ] >>801 信じられない。あふぉかw 俺が、無知なら教えてくださいw
803 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:10:31 ] >>797 お前、今日のRuby勉強会に行ったやつだろ? なぜ関数プログラミングは重要か www.sampou.org/haskell/article/whyfp.html
804 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:11:05 ] 参照透明性って、再代入できないってことだよな(間違ったら訂正してくれ) C++は再代入できる、とおれは思ってるがw
805 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:12:01 ] >>803 Rubyはすきだが、そいつじゃない。というか、今日一日ひきこもってたしなw
806 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:12:04 ] >>799 unsafeを使うときは注意が必要である いつ実行されてもプログラムに矛盾が発生しないことがはっきりしない限り使うべきではない
807 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:12:29 ] 式と値が一対一に対応していること
808 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:16:09 ] Haskellのメリットを説きたいなら>>803 のリンク教えるだけで十分じゃねーの?
809 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:16:48 ] >>802 ,804 まずはこれを読んでみてくれ。 d.hatena.ne.jp/w_o/20061008#p1 これが面白いのは、参照透明は程度問題に過ぎないという 視点を得られる所なんだと思っている。
810 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:18:09 ] 参照透明性なんて飾りだよ Haskellの魅力は、副作用が禁じられていることじゃなくて、 副作用なんていう扱いにくいものに頼らなくても自然にプログラムを書けることだ 遅延評価は大いに使う 「ほぼ使わない」なんて思えるのはHaskellに慣れてないだけだ 例えば、C言語の典型的なfor文の使い方 for(T i = init; cont(i); i = next(i)) use(i); を、Haskellで自然に書き直すと mapM_ use $ takeWhile cont $ iterate next init になるけど、これは無限リストを使っている
811 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:19:34 ] >>809 あなたはネタを理解できない人なんですね
812 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:23:05 ] 遅延評価便利だよ。 MLが不便に思えるぐらいだ。
813 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:23:13 ] >>811 ドッキリとかを真に受けるタイプの人でしょ? >>809 がネタなんだけどね
814 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:26:29 ] >>799 unsafeなんとかは、本当は参照透明なのに、コンパイラが参照透明だと見なしてくれない式を書くときに使う そうじゃない使い方もできるけど、それは邪悪な使い方だ
815 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:28:06 ] ffi使えばunsafe使わなくてもいくらでも邪悪なプログラムが書けるぜ。
816 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:28:41 ] HaskellのFFIはめちゃくちゃ楽だからな。 組み込みプログラムもなんのその。
817 名前:799 mailto:sage [2008/02/16(土) 23:41:48 ] >>803 >>808 803のリンクは、 「参照透明は関数型言語の魅力としては不適当」と言っているのでは?
818 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:47:33 ] >>816 オーバーヘッドもあるしメモリも食いまくるから組み込みには全く向かないだろ
819 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:54:08 ] >>818 関係ない。 組み込み=低リソースという時代は終わったんだよ。 それよりも、たとえばロケットや自動車のような用途では安全性が求められる。
820 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 23:57:18 ] >>817 参照透明でなければ遅延評価は役に立たないよ
821 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:00:21 ] D 言語に遅延評価もどきはあるけどな。
822 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:02:57 ] 遅延評価はテクニックに近いものもあるしな
823 名前:799 mailto:sage [2008/02/17(日) 00:06:23 ] >>820 なるほど…。 でも、遅延評価も必ず使うわけではないし、 (IOの時など遅延評価されては困る場合もあるわけですよね?) なんというか、参照透明そのものの優位性がわからない…。 ・コンパイラが作りやすい? ・数学的にみて美しい? …、いずれも一般ユーザには関係ないですよね…。
824 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:07:34 ] 参照透明性ってデバッグの容易さの点で重要と聞いてるけど。
825 名前:799 mailto:sage [2008/02/17(日) 00:08:33 ] >>814 う〜ん…。これは正しいのでしょうか? あくまでも、Haskellは参照透明であって、 そうでないプログラムは邪悪という事ですよね。
826 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:11:43 ] >>823 参照透明だったら関数の返値をキャッシュできるよ
827 名前:799 mailto:sage [2008/02/17(日) 00:14:55 ] >>826 コンパイラの話ですよね…。
828 名前:799 mailto:sage [2008/02/17(日) 00:16:41 ] >>824 Haskellのデバッグってむしろ大変そうですけど…。
829 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:18:15 ] >>827 完全にキャッシュできればプログラマはわざわざメモ化とかのテクニックを使ってプログラミングする必要がなくなる。 ・・・とは言うものの、GHCでは完全にキャッシュしているわけではない。
830 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:19:45 ] >>828 Cのデバッグで一番骨が折れるのが型によるバグ。 Haskellはコンパイルさえ通れば型に関しては完全に矛盾がない。
831 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:20:48 ] >>823 だから、参照透明性はそんなに重大な特徴じゃないんだって (利点が無いわけじゃない。コンパイラによる最適化がやりやすい。コードが読みやすい。リファクタリングしやすいetc) 逆に、「参照透明でないこと」(破壊的代入や副作用を認める)にも大して優位性は無いんだ Haskellにはもっと重要な特徴がたくさんある 動作オブジェクトを利用した入出力とか、代数的データ型+パターン照合とか、型クラスとか、遅延評価とか
832 名前:797 mailto:sage [2008/02/17(日) 00:25:59 ] >>830 Haskell の型はステキだと思いますよw でも、traceとか「デバッグ」は大変そう…。
833 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:29:07 ] >>831 >参照透明性はそんなに重大な特徴じゃない そうですよね…。 でも、なんか、かたくなに参照透明性を守ろうとして 余計わかり難くなってる気がするんですよね。 全面的な参照透明性を捨てた方が、 すっきりするのではないでしょうか…?
834 名前:799 mailto:sage [2008/02/17(日) 00:29:52 ] ↑>>833 は 799です
835 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:30:17 ] 第15回 Haskellでのデバッグのコツをつかむ itpro.nikkeibp.co.jp/article/COLUMN/20071204/288630/
836 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:30:34 ] traceってどういうのを指してるか分からんけど、printfデバッグの類は普通にできる ただ、HaskellがCよりデバッグしにくいのは事実だと思う gdbに匹敵する使いやすさのデバッガがまだ無いからだが >>833 >でも、なんか、かたくなに参照透明性を守ろうとして >余計わかり難くなってる気がするんですよね。 どの辺でそう感じた?
837 名前:799 mailto:sage [2008/02/17(日) 00:31:00 ] ああっ! >>832 も799です。
838 名前:799 mailto:sage [2008/02/17(日) 00:35:00 ] >>836 > printfデバッグの類は普通にできる そうなんですか? なんかprintfいれるとバグが再現しないとか多そうですが…。 > どの辺でそう感じた? IOモナドww 参照透明性を捨てれば もっとステキな実装がありそうじゃないですか?
839 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:38:46 ] 参照透明性を確保するために導入したんだから 本末転倒だじょ
840 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:41:05 ] 俺はIOモナド大好きなのでその気持ちは良く分からん 例え参照透明性を捨ててもIOモナドは使いたい
841 名前:799 mailto:sage [2008/02/17(日) 00:41:50 ] >>839 ん? いや、だから、参照透明性に固執するから、 IOモナドなんて理解しにくい方法で実装してるんでしょ?
842 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:43:33 ] 参照透明性を実現する完全に純粋な関数型言語を作るのが Haskell の1つの目標だったんじゃないのか?
843 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:50:41 ] IOモナド、というかIO動作の考え方は多少とっつきにくいけど、分かってしまえば簡単なことだし、 副作用を使った入出力よりずっとまともだと思う それから、遅延評価の言語で素朴に副作用を使うと実行順が制御困難になるけど、 IO動作ならこの問題がない >>842 だろうな でも言語のユーザーにとってはそんな目標はどうでも良い
844 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:51:38 ] 参照透明性が要らないというなら OCaml とか他の言語使えばいい。 それだけだと思うぜ。
845 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 01:00:20 ] >>844 その議論はおかしい Haskellの特徴は参照透明性だけじゃない デフォルトの遅延評価も型クラスもIOモナドも$演算子もOCamlには無い 参照透明性なんてどうでも良いという奴にでも、Haskellを使う理由はいくらでもある
846 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 01:09:14 ] じゃあ、参照透明性の無いHaskell に相当する言語を作ったらいいんじゃね。
847 名前:799 mailto:sage [2008/02/17(日) 01:12:57 ] >>840 そうなんですか…。 結局、慣れの問題なんでしょうかねぇ…。
848 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 01:15:01 ] Haskell では参照透明性をくずすものは trace のみなんだっけ?
849 名前:799 mailto:sage [2008/02/17(日) 01:15:23 ] >>846 まさに、そう、思うんですよw そんな言語があれば、 確実にブレイクするのではないでしょうか? 誰か作って!私はもちろん……ムリ!
850 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 01:26:25 ] >>848 unsafePerformIOってのがある >>849 単に参照透明性のないHaskellならunsafePerformIOを言語の一部として認めれば良いんだけど、 IOモナドを排除するのは難しいと思う >>843 で書いたけど、普通の言語にあるような副作用による入出力は、遅延評価と相性が悪い 実行順を分かり易く制御するには、結局、IOモナドか、Cleanの一意型か、 それに代わる何か新しいメカニズムが必要になる
851 名前:799 mailto:sage [2008/02/17(日) 01:39:54 ] >>850 な〜るほど! ひょっとしてunsafePerformIOを使いまくって >>814 の言う邪悪なIOライブラリを作れば、 Haskellのままでもいいかもしれませんねw
852 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 01:41:59 ] もう屁みたいな例をたくさんあげられるのはウンザリだよ。 こうしよう、C(ほかの言語でもいい)からHaskellに乗り換えるために十分な 説得力を持つ実務的な例を1つだけあげてくれ。
853 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 01:55:30 ] darcs
854 名前:799 mailto:sage [2008/02/17(日) 01:55:42 ] >>852 「実務的」というかどうかはしらないけど、 コンパイラ的な処理には向いてるらしい…。 再帰下降構文解析 ttp://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0%E4%B8%8B%E9%99%8D%E6%A7%8B%E6%96%87%E8%A7%A3%E6%9E%90 HaskellやMLなどの関数型言語での再帰下降構文解析の実装は特に簡単である。 出典: フリー百科事典『ウィキペディア(Wikipedia)』
855 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:00:39 ] > HaskellやMLなどの関数型言語での再帰下降構文解析の実装は特に簡単である。 っていうのはウソっていうのはどっかでみたなw
856 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:06:37 ] >>854 実際、言語処理系には向いてる。 構文解析だけじゃなく、コンパイル過程での構文木の操作とかに 代数的データ型とパターンマッチがぴったりハマってかなり綺麗に書ける (MLも同様。代数的データ型じゃなくてバリアントという名前だけど)。 言語処理系は、基本的にツリーの変形みたいな I/Oを伴わない数学的な処理が多いから、という理由づけもできるかな。
857 名前:799 mailto:sage [2008/02/17(日) 02:08:10 ] Haskellというか、関数型言語の魅力としては、 >>803 のリンク先を読めばかなり納得できると思う。
858 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:16:57 ] >>848 いいえ
859 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:23:46 ] Haskellの言語仕様にunsafeとかFFIとかってあったっけ? GHCの仕様じゃないの
860 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:27:47 ] >>859 FFIはHaskell 98への追補 www.cse.unsw.edu.au/~chak/haskell/ffi/ unsafePerformIOも入ってる
861 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 02:29:45 ] じゃあ、Haskellは純潔を失ったというわけだ
862 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 08:36:34 ] ハードリアルタイムアプリはHaskellでは無理
863 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 09:30:28 ] 実時間要求とメモリを直接利用するアプリケーション以外はHaskellでおk
864 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:58:51 ] >>863 できるだろ www.haskell.org/ghc/docs/latest/html/libraries/Win32/System-Win32-DebugApi.html#v%3Ac_ReadProcessMemory
865 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 12:01:27 ] 仮想メモリとかOS必須じゃn
866 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:47:44 ] Haskell (International Computer Science Series) (ペーパーバック) Simon Thompson (著) # ペーパーバック: 528ページ # 出版社: Addison Wesley; 3Rev Ed版 (2008/9/15) # 言語 英語, 英語, 英語 # ISBN-10: 0201882957 # ISBN-13: 978-0201882957 # 発売日: 2008/9/15 今度こそ発売?
867 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 18:08:34 ] 参照透明性を保証しないと、グラフ簡約が使えなくね?
868 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 18:18:32 ] 使えなくはないと思うが、何で?
869 名前:デフォルトの名無しさん [2008/02/18(月) 20:15:31 ] >>642 データ構造とアルゴリズムをまとめるだけなら、それこそ関数型言語の得意分野だし、 手続き型の世界でも、メッセージメタファって何それ、なgeneric programmingが幅を利かせている。 その分なおさら、状態と手続きをまとめるSmalltalk的なオブジェクト指向が 影響力を増しているように思う。 >>654 のAlan Kayの言葉は、実行順序への依存性が下がること (これはメッセージメタファ、イベント駆動から自然に出てくる)と、 参照透明という意味で状態を全く持たないことを(故意に?)混同している。
870 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 02:47:18 ] ハードウェアリアルタイム処理って言葉にすれば Haskellはかなりいけそうな感触なんだけどなぁ
871 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:02:24 ] >>868 形式的な表現が同じでも、値が同じことの保証がなくなるから。
872 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 10:36:55 ] >>871 副作用を入れるなら当然それは覚悟の上じゃないのか
873 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 12:45:42 ] >>872 副作用を入れてもいいのは、値がユニット型の関数だけにしないと破綻するだろ。
874 名前:デフォルトの名無しさん [2008/03/09(日) 07:06:26 ] ↓この暗号が解けたら初心者卒業と言えるでしょうか? main = getArgs >>= putStr . flip id "\n" . foldr (.) id . map (showHex . read) ttp://haskell.g.hatena.ne.jp/nobsun/20060819/ShowS を少し改変
875 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 10:02:11 ] >>874 暗号に見えていたのが、何の変哲もないプログラムとして認識できるようになったら卒業だな。
876 名前:874 mailto:sage [2008/03/09(日) 19:04:29 ] >>875 そうですか… 1日がかりで解けたので初心者卒業かと思ったのですが…orz 何の変哲もないプログラムに見えるように精進しますw
877 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 23:43:38 ] 何の変哲もないように見える必要はないと思うが解くのに1日がかりはまだ初級者の域か。
878 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:20:39 ] 悩むところが見当たらん おれはもうだめだ
879 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:26:04 ] flip id "\n"が悩むところじゃないか? なぜ($"\n")と書かないんだろう
880 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 13:47:26 ] Prelude> ($ "789") $ ($ (($ "456") $ ($ "123") $ (++))) $ (++) "123456789" スタックマシンみたいだ(w
881 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 18:48:31 ] 便利だなこれ \a -> hoge a 4 () flip (flip hoge 4) () ($ ()) . ($ 4) . hoge
882 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 16:27:19 ] >>881 ああ、そうやってカリー化できるんだ。目から鱗が落ちたよ。
883 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:48:42 ] 引く手あまたのプログラミング言語は? 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以下だったそうだ。 ---
884 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 00:45:19 ] 仕事でプログラムやってるやつなんて この板にいるの?
885 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:39:26 ] ええっ?ほとんどプログラム関連の人じゃないの?
886 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 01:41:22 ] プログラム関連の研究を仕事でやってる人はいるかもしれないが
887 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:13:42 ] この「板」にはいくらでもいるだろう>仕事でプログラムやってるやつ このスレに限れば、仕事と直で結びつきにくい言語かもしらんけど でも仕事でプログラムやる傍ら、趣味や素養のためにHaskell弄ってる奴も珍しくはないんじゃなかろうか
888 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 18:08:15 ] 俺は研究職だが仕事でHaskell使ってる。
889 名前:デフォルトの名無しさん [2008/05/25(日) 22:21:03 ] はじめましてAranskファンクラブです。 皆さんはAranskをご存知でしょうか? 最近ネット社会において急速に発言力を増しつつある 集団です。 本家:homepage3.nifty.com/Aransk/ ミラーサイト:www.geocities.jp/aransk88/ 日本語Blog:aransk.cocolog-nifty.com/whypro/ 英語もどきBlog:d.hatena.ne.jp/Aransk/ ここまでがAransk Officialsです。 (上記以外にも2ちゃんねるのプログラム板にAransk専用スレが 立っていますが、これはAranskとは何のつながりもありません。) 上記の2ちゃんねる、yahoo掲示板に精力的に意見を 書き込むと同時に自らのサイトの更新も頻繁に 行っています。 驚いたことに、あらゆる場所で人気が「ありません。」 その人気の無さをこのBlogで究明してみるつもりです。 ご興味ある方は是非ご参加下さい。
890 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 22:30:18 ] \yってyを含まないって意味だっけ?
891 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 23:10:13 ] Haskellの\はlambda \y -> e で、yからeへの関数
892 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 18:49:53 ] 逆ポーランド記法で日本人に優しいとか言ってみるRPHaskellとか作って
893 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 10:56:30 ] 「初心者のためのプログラミング言語ガイド」スレに Haskellを狂信的に勧めるやつが現れてスレがめちゃくちゃに。
894 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 19:56:00 ] >>893 信者と信者っぽく振る舞ってネタにしてる奴と2種類いるようだな。
895 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:26:02 ] Haskellの入門書は、ふつうのHaskellプログラミングでおk?
896 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 21:30:22 ] >>895 WEBが一番 ここが一番わかりやすいぞ www.sampou.org/cgi-bin/haskell.cgi
897 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 23:45:22 ] >>896 マジか。本買おうかずっと迷ってたんだ。サンクス。これでやってみるよ。 LL Futureで見たんだけどHaskellって並列プログラミングの強さはどんなもんでしょう? ttp://www.nicovideo.jp/watch/sm4505381
898 名前:36 ◆K0BqlCB3.k mailto:sage [2008/09/13(土) 00:50:59 ] >>897 現在開発中で一部は使用可能 hackage.haskell.org/trac/ghc/wiki/DataParallel/WorkPlan
899 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 02:18:36 ] Erlangにすればいいんでない?
900 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 01:21:22 ] >>897 本の方がわかりやすいと思うがWebの方を読んで理解できるレベルなら それでいいと思う。お金かかんないし。