【数学者】Haskellはクソ言語【オナニー】
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2005/09/30(金) 01:34:050002デフォルトの名無しさん
2005/09/30(金) 01:36:140003デフォルトの名無しさん
2005/09/30(金) 01:42:530004デフォルトの名無しさん
2005/09/30(金) 01:46:030005デフォルトの名無しさん
2005/09/30(金) 04:40:27qsort [] = []
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]
0006デフォルトの名無しさん
2005/09/30(金) 07:48:300007デフォルトの名無しさん
2005/09/30(金) 09:32:510008デフォルトの名無しさん
2005/09/30(金) 10:08:59それが直観的に理解できないということは素養が足りない。かなりやばい。
日本語にすると理解できたりする?
qsort [] = []
qsort (x:xs) = qsort x未満の要素 ++ [x] ++ qsort x以上の要素
ここで
x未満の要素 = [y | y <- xs, y < x]
x以上の要素 = [y | y <- xs, y >= x]
クイックソート自体を知らない奴でもこれで理解できるだろうというくらい
わかりやすいと思うが。
0009デフォルトの名無しさん
2005/09/30(金) 10:49:15Haskellで実装されたperl6は既に動いている。
よってHaskell>>>超えられない壁>>>C/C++
0010デフォルトの名無しさん
2005/09/30(金) 14:34:490011デフォルトの名無しさん
2005/09/30(金) 17:17:55同意
0012デフォルトの名無しさん
2005/09/30(金) 17:48:56じゃなんでゲームプログラマーはHaskell使わずにC/C++使うの?
0013デフォルトの名無しさん
2005/09/30(金) 18:36:470014デフォルトの名無しさん
2005/09/30(金) 18:41:36~~~
0015デフォルトの名無しさん
2005/09/30(金) 20:12:54爆裂ブロック崩し→Java
脱出系ゲーム→Flash == ActionScript
じゃないのか
っていうか、俺、Javaってほぼそのためだけにインストールしているような希ガス(w
0016デフォルトの名無しさん
2005/10/01(土) 08:51:00銀行業務とかの大量バッチとかでは使わないよね。
0017デフォルトの名無しさん
2005/10/01(土) 14:04:02素因数分解とか...
なんか数学者がアルゴリズムを思いついてパッと評価したいときに
使われるような言語というイメージを持っているんだけど..
0018デフォルトの名無しさん
2005/10/01(土) 21:45:06スレタイ通り、数学者に特化しか言語ってことですか。
おれみたいなデジドカに縁は無さそうだ。。。
(勉強すれば世界は広がるだろうがね)
0020デフォルトの名無しさん
2005/10/01(土) 22:48:33すこし疑問だ。
まともプログラム組めないのに中途半端に手を出してる気がする。
0021デフォルトの名無しさん
2005/10/01(土) 23:42:48それを"Cで実装すると予想される遅さ"程度に遅い
0022デフォルトの名無しさん
2005/10/02(日) 00:01:51デジドカにとって最もすばらしいのはどんなに変に書いてもバグがでず、なおかつ理由は良く解らないが難しいという事で単価の上がる言語の事
・・・COBOLか
0023デフォルトの名無しさん
2005/10/03(月) 12:54:36C/C++と比較して遅い、メモリ食いすぎだからゲームには不向きなんだろうな。
そしてなによりプログラマの絶対数が少ないのがネック。
一方でPagsの例しかり、言語処理系の実装には最強?
>>20
むしろ1はHaskellerで、この優れたマイナー言語に目をひくように
あえて煽るようなスレを立てたような希ガス
0024デフォルトの名無しさん
2005/10/03(月) 15:37:26Haskellはとかく宣伝でモナドが強調されるのがネガティブキャンペーンに
なってるとしか思えん。
C++のテンプレートライブラリで入り組んでくるとconstやら参照やらが
足引っ張るのとかxxx_typeをtypedefするお約束やらがあったりとか
templateでmetaprogrammingやっちゃったりとかよりはマシな厄介さ
だと思う。
そういうC++のアドホックな仕組みの積み重ねよりはHaskellの論理的に
まとまったものの方がちゃんと相手をするには楽だし、
コンストラクタの例外安全とかC++のとかく落とし穴の多さを考えると
ずっと楽と言えるかも知れん。
0025デフォルトの名無しさん
2005/10/03(月) 16:48:20[y | y <- xs, y < x]
これは、数学で言うところの
{ y | y ∈ xs で y < x }
という集合のこと。ただし集合でなくてリスト(重複OK, 順序あり)。
0026デフォルトの名無しさん
2005/10/03(月) 16:49:52> xxx_typeをtypedefするお約束やらがあったりとか
お約束というかtypetraitsのcheck実行機構としてtypedefを使っている。
0027デフォルトの名無しさん
2005/10/04(火) 01:15:4300281
2005/10/12(水) 09:46:26ごめんなさい。これで大体わかりました
なるほど、確かにわかりやすいかもしれません
[x | x^2 + x + 2, x > 20]
とかかけちゃうわけですか、こりゃすごいかも...
0029デフォルトの名無しさん
2005/10/13(木) 05:50:130030デフォルトの名無しさん
2005/10/17(月) 16:38:410031デフォルトの名無しさん
2005/10/22(土) 10:51:010032デフォルトの名無しさん
2005/10/23(日) 01:06:31よく知らんからお勧めのリンクあったらはってくれ
0033デフォルトの名無しさん
2005/10/23(日) 12:05:41[x^2 + x + 2 | x <- Z, x > 20]
配列のSWAPとか素晴らしい性能を持ってるお ^ ^
0034デフォルトの名無しさん
2005/10/23(日) 17:03:07_,,..i'"':, 妖怪 箱ティッシュ
|\`、: i'、
\ \`_',..-i オナニーして逝きそうになると
\|_,. -┘ ティッシュが手元に無い。
タタタッ _ノ ) ノ それは妖怪箱ティッシュの仕業です。
ノ ///
_// | (_ 弱点は水に濡れると死ぬこと。
0035デフォルトの名無しさん
2005/10/24(月) 09:48:53[x^2 + x + 2 | x <- [21..]]
0036デフォルトの名無しさん
2005/10/24(月) 21:48:49N=[1..]
[x^2 + x + 2| x<-N, x>20]
0037デフォルトの名無しさん
2005/10/25(火) 23:29:02>>24
Haskellでもfundepsでメタプログラミングができるよ。
もちろん画面を埋めつくすエラーメッセージ付きだ。
0038デフォルトの名無しさん
2005/10/25(火) 23:31:330039デフォルトの名無しさん
2005/10/27(木) 22:04:550040デフォルトの名無しさん
2005/11/03(木) 14:47:55[x] と [x 以上の要素] を連結してるから
ソート後のリストに x が2つ入っちゃう
0041デフォルトの名無しさん
2005/11/03(木) 15:05:38間違ってないよ xとxsに分離されてるから
x以上になってないと[1,3,1,4]をqsortしたとき要素が減ってしまう
0042デフォルトの名無しさん
2005/11/03(木) 15:33:15スマソ
0043デフォルトの名無しさん
2005/11/16(水) 21:50:57リアルタイムゲームも書ける
ttp://www.geocities.jp/takascience/windows/monadius.html
0044デフォルトの名無しさん
2005/11/19(土) 12:28:18( ゚∀゚)彡 ハスケル! ハスケル!
⊂彡
http://www.haskel.com/
0045デフォルトの名無しさん
2005/11/22(火) 00:44:19大抵の処理は 高階関数一つで終わりさ
関数型のIOを守るためお前は考え 便利さ見失った
手続き忘れた インターフェース<かお>など見たくはないさ
IO 取り戻せ
0046デフォルトの名無しさん
2005/11/22(火) 07:51:080047デフォルトの名無しさん
2005/11/22(火) 07:55:05Haskellネタ師の溜り場はここですか?
0048デフォルトの名無しさん
2005/11/22(火) 23:22:300049デフォルトの名無しさん
2005/11/23(水) 00:56:10C,C++とはまだ吐き出されるコードに雲泥の差がある。
まだまだ中途半端な存在なんだね。
0050デフォルトの名無しさん
2005/11/26(土) 22:20:52Haskellネタ師の溜り場はここですか?
0051デフォルトの名無しさん
2006/01/27(金) 01:34:140052デフォルトの名無しさん
2006/01/27(金) 02:09:55そんなに一般人に媚び売ってどうすんの?
0053デフォルトの名無しさん
2006/01/27(金) 19:33:120054デフォルトの名無しさん
2006/01/28(土) 23:32:250055デフォルトの名無しさん
2006/01/28(土) 23:52:03たしかに++とか:とかの意味を知らないと>>8では理解しようがないけど、
Haskellを知っていてクイックソートを知らない奴がかりにいたとすると
やっぱりそいつは>>5を見て即座にクイックソートを理解すると思う。
その意味で、>>8が言ってることもそんなに外れてないような気がする。
関係ないが、Rubyあたりでクイックソートを書いても似たようなものになるはずなのに
なんでHaskellの特徴みたいに扱われてるんだろう…
0056デフォルトの名無しさん
2006/01/29(日) 00:44:06数式に近い
0057デフォルトの名無しさん
2006/01/29(日) 02:12:390058デフォルトの名無しさん
2006/01/29(日) 07:12:150059デフォルトの名無しさん
2006/01/29(日) 07:15:16http://meme.b9.com/start.html
0060デフォルトの名無しさん
2006/01/29(日) 11:10:00俺にはむしろ手続き型のほうが直感的に思えない
0061デフォルトの名無しさん
2006/01/29(日) 11:26:33やっぱり Haskeller は、Haskell のコードからどんなアセンブラが生成されるか直ぐに分かるの?
0062デフォルトの名無しさん
2006/01/29(日) 11:32:420063デフォルトの名無しさん
2006/01/29(日) 11:56:15どんなコードになるのかわかりません(⊃д`)
0064デフォルトの名無しさん
2006/01/31(火) 10:05:430065デフォルトの名無しさん
2006/01/31(火) 17:59:21議論の土台としてふさわしくない。みたいな?
0066デフォルトの名無しさん
2006/01/31(火) 18:50:260067デフォルトの名無しさん
2006/01/31(火) 19:31:370068デフォルトの名無しさん
2006/01/31(火) 20:16:46このプログラミング言語の良さを自慢して俺をワクワクさせろ。
0069デフォルトの名無しさん
2006/01/31(火) 21:24:42どうだ、魅力的だろ。
0070デフォルトの名無しさん
2006/01/31(火) 21:30:42・高級言語の基本的な特徴を備えている。
メモリ操作はほとんど意識する必要がない。全部GC任せにできる。
そもそもGCの存在すら意識しなくてもいいくらいだ。オブジェクトは全部(参照やポインタでなく)値。
関数も値。手続きも値。
・代数的データ型
「タグつき共用体」とか「バリアント」とか呼ばれる奴だ。
これ一つでstructにもunionにもenumにもなる。萌え。
うまく言えないが、とても素晴らしい。
・美しい構文
予約語よりも記号を多用した簡潔な構文だ。とくにwhere節(>>5にもあるように、
ローカル変数を関数本体の後で定義する機能)は手放しがたい。
・モナド
CやPascalのセミコロンを多重定義できる機構だと思ってくれ。文が実行される文脈を定義することができる。
非決定モナドを使えば複数の選択肢から一つを決定するたびに世界の方が分裂する計算を表現できるし、
継続モナドを使えばgotoすらかわいく見える邪悪な制御構造を使うことができる。
誰にも読めないソースをつくり出すには絶好の道具だ。
・強力な静的型システム
多重定義と総称性(generics)が自然に統合されたそれなりに単純な型システムがある。
特に、型推論があって、こまごまとした指定をせずとも型に頼ったプログラミングができる。
総称的な関数はそうでない関数と同じように書けるし扱える。
ワクワクしたか?したらとっとと勉強しろ。
0071デフォルトの名無しさん
2006/01/31(火) 21:37:53では俺様に参考書を薦めるがよい。
0072デフォルトの名無しさん
2006/01/31(火) 21:50:460073デフォルトの名無しさん
2006/01/31(火) 22:03:37Haskell: The Craft of Function Programming
はとても良い本だが、俺はこれ以外に入門書を読んでいないので比較はできない。他には、
Introduction to Functional Programming using Haskell
あるいは、
The Haskell School of Expression
が有名なようだ。
webで学ぶなら、Yet Another Haskell Tutorialがほとんど唯一のまとまった入門書だと思う。
0074デフォルトの名無しさん
2006/02/01(水) 22:34:44なんか面白いことできる ∀x∀y ∃z
0075デフォルトの名無しさん
2006/02/01(水) 23:38:330076デフォルトの名無しさん
2006/02/13(月) 20:56:42http://www.sampou.org/haskell/a-a-monads/html/index.html
http://www.sampou.org/cgi-bin/haskell.cgi?Programming%3aWayToHaskeller
http://www.sampou.org/haskell/tutorial-j/index.html
http://www.sampou.org/haskell/ipsj/
0077デフォルトの名無しさん
2006/02/14(火) 01:46:36文書はとにかくあれば何でもおーけーみたいのはちょっと。
0078デフォルトの名無しさん
2006/02/14(火) 03:03:113番目は2番目が半分以上わかるぐらいで役立つ。
4番目はGHCは読めないけどもっと普通のなら読めるぐらいになったら役立つ。
1番目はモナドがわかんない時に役立つ。
0079デフォルトの名無しさん
2006/02/14(火) 03:23:280080デフォルトの名無しさん
2006/02/14(火) 06:13:50本当に役立つのかどうか不安なレスだな。
効用: 読んだことに満足する、だったりして。
0081デフォルトの名無しさん
2006/02/14(火) 06:40:14俺は>>76じゃないけど、正直なところ、今日本語で読める文章で
Haskellを学び始めるのに適したものはないと思う。
一ヶ月ほどで本が出ると思われるのでそれを待つか、
MLの入門文書を読んで関数型言語に慣れてから「やさしいHaskell入門」を読むのが
近道なんじゃないだろうか。
0082デフォルトの名無しさん
2006/02/14(火) 07:23:10後はコード読んでHaskellの世界を開拓(Hack)してゆくしかないと思う。
0083デフォルトの名無しさん
2006/02/14(火) 09:27:480084デフォルトの名無しさん
2006/02/14(火) 09:45:31Haskell hacks
が出るのはいつの日のことですか
0085デフォルトの名無しさん
2006/02/15(水) 04:54:51オライリーの中の人にもオナニーと思われてる予感
0086デフォルトの名無しさん
2006/02/15(水) 04:56:35そだね。近所なんだからよく相談するようにね。
0087デフォルトの名無しさん
2006/03/05(日) 06:14:030088デフォルトの名無しさん
2006/03/05(日) 06:34:280089デフォルトの名無しさん
2006/03/15(水) 02:08:50ねーよwwwwww
0090デフォルトの名無しさん
2006/03/15(水) 02:19:030091http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 20:17:15もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0092デフォルトの名無しさん
2006/03/23(木) 17:07:2810年以内に
0093デフォルトの名無しさん
2006/03/24(金) 12:09:370094デフォルトの名無しさん
2006/03/25(土) 02:30:23発売ってまだだっけ?
0095デフォルトの名無しさん
2006/03/25(土) 03:53:29言語を覚えているかどうかなんて些細な問題でしかない。
君が勉強すべきなのは数学だ。
さもなくば、ゲームが作りたいというならAPIやらライブラリやらの仕様書でも読んでろ。
0096デフォルトの名無しさん
2006/03/27(月) 17:42:460097デフォルトの名無しさん
2006/03/27(月) 17:50:350098デフォルトの名無しさん
2006/03/27(月) 18:29:53あの三冊ともSICPと同じことやらされて飽きる
0099デフォルトの名無しさん
2006/03/27(月) 19:02:02そんなあなたにGentle introduction to Haskell
0100デフォルトの名無しさん
2006/03/27(月) 23:49:57ttp://www.amazon.co.jp/exec/obidos/ASIN/4839919623
0101デフォルトの名無しさん
2006/03/28(火) 00:03:370102デフォルトの名無しさん
2006/03/29(水) 20:13:540103デフォルトの名無しさん
2006/04/06(木) 06:05:36Haskellの23%は鍛錬で出来ています
Haskellの8%は気の迷いで出来ています
Haskellの7%はミスリルで出来ています
Haskellの3%は成功の鍵で出来ています
成功の度合いは低い…
0104デフォルトの名無しさん
2006/04/09(日) 17:10:57プログラミング初めてってんならいいかも知れんけど。
0105デフォルトの名無しさん
2006/04/09(日) 17:54:210106デフォルトの名無しさん
2006/04/09(日) 18:48:350107デフォルトの名無しさん
2006/04/09(日) 19:16:470108デフォルトの名無しさん
2006/04/09(日) 20:09:300109デフォルトの名無しさん
2006/04/09(日) 20:19:150110デフォルトの名無しさん
2006/04/10(月) 10:13:340111デフォルトの名無しさん
2006/04/10(月) 21:07:480112デフォルトの名無しさん
2006/04/10(月) 21:11:23読みました。
一言で言うと、トイレットペーパーの方がマシでした。
0113デフォルトの名無しさん
2006/04/10(月) 21:41:540114デフォルトの名無しさん
2006/04/12(水) 22:31:000115デフォルトの名無しさん
2006/04/13(木) 05:00:22単に名前の付けかたがまずいだけのような...
>>8
は分かりやすい。
0116デフォルトの名無しさん
2006/04/13(木) 05:08:360117デフォルトの名無しさん
2006/04/14(金) 07:05:290118デフォルトの名無しさん
2006/04/14(金) 16:19:390119デフォルトの名無しさん
2006/04/15(土) 18:06:170120デフォルトの名無しさん
2006/04/16(日) 12:50:32いつ根本から変わるかもわからんし。
0121デフォルトの名無しさん
2006/04/16(日) 14:58:42どの本も最初にエレガントな解を見せておいて
実用的には別解が必要ですと来る。
その解説がものすごく手続き的。
0122デフォルトの名無しさん
2006/04/16(日) 15:11:27例えばどんな本?
0123デフォルトの名無しさん
2006/04/16(日) 16:06:52迷わず買ったが、むずくて即挫折です
0124デフォルトの名無しさん
2006/04/16(日) 20:44:25MLあたりから始めて遠回りしてみたら?
0125デフォルトの名無しさん
2006/04/20(木) 21:17:080126デフォルトの名無しさん
2006/04/22(土) 08:52:33現場で役に立たないタイプの典型。
0127デフォルトの名無しさん
2006/04/22(土) 12:00:55http://www.fumie-w.com/
http://be-dream.jp/200/05/205_1.php
高校を卒業するまでの私の人生はまさに順風満帆。
そんな時、突然告げられたのが父の会社の倒産。
ようやく私も事の次第がわかってきて、暗い将来を考えると涙が止まらなくて……。
「看護大に行くのはもうあきらめよう」と泣いていると、兄がこう言ってくれたんです。
「夢だった看護師をあきらめなきゃならないのはかわいそうだと思う。
でも、どんな仕事に就こうが、その世界で成功すればいいだけだよ。
……自分が置かれている分野でトップになれた人が成功者だと思う」
と慰めてくれたんです。
救われましたね〜、この言葉で。
「よし!頑張るしかない。
妹もいるし、家にお金を入れなきゃいけないんだから働こう!」
と気持ちを切り替えることができたんです。
同じ19歳でも、人生いろいろですね。
0128デフォルトの名無しさん
2006/04/22(土) 13:07:19若林 史江さんの36%は夢で出来ています。
若林 史江さんの24%は乙女心で出来ています。
若林 史江さんの14%は毒電波で出来ています。
若林 史江さんの11%は花崗岩で出来ています。
若林 史江さんの8%は鍛錬で出来ています。
若林 史江さんの5%は根性で出来ています。
若林 史江さんの1%は真空で出来ています。
若林 史江さんの1%は株で出来ています。
0129デフォルトの名無しさん
2006/04/22(土) 19:35:400130デフォルトの名無しさん
2006/04/22(土) 20:17:16コピペじゃない。
っ【成分解析 カドルコア】
0131デフォルトの名無しさん
2006/04/23(日) 01:41:05占いツール(?)なのか。
ググッたけど、激しく落とす気しねーw
0132デフォルトの名無しさん
2006/04/23(日) 14:00:21テレビ見ている人は、その状況が勝手に脳内補完されるから面白い(流行っている)のかな、と。
まあ、俺はテレビ見ないからな。
0133デフォルトの名無しさん
2006/04/23(日) 19:59:530134デフォルトの名無しさん
2006/04/23(日) 20:03:08最近の芸人はどれもコンセプトは一緒でつまらん。
ちょうど、他人のレポートを写して書き方をちょこっと変えて提出する学生と同じ。
0135デフォルトの名無しさん
2006/04/26(水) 01:30:25芸人はバラエティー番組の部品だから。
usefulな部品が同じようなインターフェイスを持つようなもの。
0136デフォルトの名無しさん
2006/04/26(水) 01:56:51そういう環境に最適化しちゃったやつは環境の変化になかなかついてこれないから淘汰されるよ。ついてこれるのは変化に対応できたやつだけ。
0137デフォルトの名無しさん
2006/04/28(金) 09:44:05今の芸人に移植性なんて期待してないんだよ
0138デフォルトの名無しさん
2006/04/28(金) 15:33:390139デフォルトの名無しさん
2006/04/29(土) 22:00:52>現場で役に立たないタイプの典型。
会社入れば、こういうことを仰る輩の実力が痛い程味わえますね。
0140デフォルトの名無しさん
2006/04/30(日) 15:03:44>最近の芸人はどれもコンセプトは一緒でつまらん。
ああ、>>134 も成長したんだな。良かった良かった。
あと一つ教えてやる事があるとすると、
何もそれは「最近」に限ったことではない。
昔から同じ。
単に >>134 が昔の芸人を知らなかっただけ。
0141デフォルトの名無しさん
2006/04/30(日) 16:58:440142デフォルトの名無しさん
2006/04/30(日) 17:11:43Haskellと芸人のつながりを教えてください。
0143デフォルトの名無しさん
2006/04/30(日) 17:13:480144デフォルトの名無しさん
2006/04/30(日) 17:19:26あなたは私ですか?
私が気にしているのに、なぜどうでもいいという答えが出てくるんですか。
まじめに考えなさい。
0145デフォルトの名無しさん
2006/04/30(日) 17:23:080146デフォルトの名無しさん
2006/04/30(日) 20:50:430147デフォルトの名無しさん
2006/04/30(日) 21:09:130148デフォルトの名無しさん
2006/04/30(日) 21:20:32数学的つーより、定義を書き下すスタイルが美しいと思う。
0149デフォルトの名無しさん
2006/04/30(日) 21:20:51時よとまれ!お前は美しい!
0150デフォルトの名無しさん
2006/04/30(日) 21:22:490151デフォルトの名無しさん
2006/04/30(日) 21:23:270152デフォルトの名無しさん
2006/04/30(日) 21:43:080153デフォルトの名無しさん
2006/04/30(日) 21:55:150154デフォルトの名無しさん
2006/04/30(日) 22:02:190155デフォルトの名無しさん
2006/04/30(日) 22:47:580156デフォルトの名無しさん
2006/04/30(日) 23:15:42ぶっちゃけ実質的には副作用ある。
0157デフォルトの名無しさん
2006/04/30(日) 23:24:21プログラミング言語の歴史だ。
0158デフォルトの名無しさん
2006/04/30(日) 23:27:52そのコピペのソースはどこ?
0159デフォルトの名無しさん
2006/04/30(日) 23:55:23副作用って言葉自体が言語レベルの(表面上の)概念なんだから。
0160デフォルトの名無しさん
2006/05/01(月) 00:04:13副作用があるとかなんとか、馬鹿が鳴いてるだけですから無視してください。
0161デフォルトの名無しさん
2006/05/01(月) 02:20:350162デフォルトの名無しさん
2006/05/01(月) 16:21:260163デフォルトの名無しさん
2006/05/01(月) 18:01:170164デフォルトの名無しさん
2006/06/02(金) 19:25:520165デフォルトの名無しさん
2006/06/02(金) 21:16:53そろそろ勉強始めろよ。和書も出たんだし。
0166デフォルトの名無しさん
2006/06/03(土) 18:55:27それだけで完結するようなプログラムもありえないので、
ビジネスロジックだけをこれで書いて、ほかの言語から
呼び出せってモノなんでしょ?
もっといえば、ストアドみたいな。
0167デフォルトの名無しさん
2006/06/03(土) 19:43:52そういう使いかたもあるけど、そのための言語と言う訳ではない。
宣伝文句は「general purpose programming language」だし、
ライブラリの整備もかなりの部分は「全部Haskellで書く」方向に向かっている。
そもそも、なんでロジック以外を書くにはHaskellは不便だと思うんだ?
0168167
2006/06/03(土) 19:46:36>そもそも、なんでロジック以外を書くにはHaskellは不便だと思うんだ?
いや、実際不便なんだが、それは主にライブラリの不備のせいであって、
言語がそっちを指向してる訳じゃないと思うがどうよ。
0169デフォルトの名無しさん
2006/06/03(土) 20:44:04はーい^^
0170デフォルトの名無しさん
2006/06/04(日) 00:48:32簡単な解説ページしかみてないので今ひとつ自信はないんだけど、
I/O関係でムリを通そうとしてる雰囲気がほのかに・・・。
そんなんだったら、ほかの言語から呼び出すのにとどめたほうが、
みんな幸せになれそう。
正規表現を拡張して独立したプログラム言語にしようとしてるような、
ミョーな意固地さを感じる・・・。
0171デフォルトの名無しさん
2006/06/04(日) 01:59:340172デフォルトの名無しさん
2006/06/04(日) 02:13:400173デフォルトの名無しさん
2006/06/04(日) 16:13:06あれは、オブジェクトの状態を変えないって意味がある(実際はちょっと違うけど)
SICPにもあるけど、副作用や参照のせいで出てくるバグ(side-effect bug)も、
結構無視できない。
私の場合だけど、
副作用がある部分と、副作用が無い部分を切り分けられないかと思い
様々な言語を探していたらHaskellとかCleanとか(*)に突き当たった。
そのように見れば、IOモナドで副作用を切り分けるのもそんなに違和感が無いんじゃないかな。
(*)研究用の(実用的でない)言語なら他にもあるみたい。
http://computing-dictionary.thefreedictionary.com/Euclid
0174デフォルトの名無しさん
2006/06/04(日) 18:11:250175デフォルトの名無しさん
2006/06/04(日) 18:47:20サンプルコードぐぐってやる気なくしたけど
0176デフォルトの名無しさん
2006/06/04(日) 20:12:00たぶんIOモナドの事を言ってるんだと思うが、IOをモナドで表すのは
どっちかというと言語の詳細であって、それほどプログラミングのスタイルが
影響を受ける訳じゃない。
たとえ内部が正規表現で出来ていようと、その上で普通にコードがかけるなら
問題ないんじゃないだろうか。
という訳で、別に無理をしていても良いと思うんだが、個人的には
HaskellのIOがすごく無理をしているようには感じられない。うまく言えないけど。
0177デフォルトの名無しさん
2006/06/04(日) 20:26:01let x = ...を
x <- ...
に書き換えたり、
戻り型を a から IO a や State s a に書き換えなければならない事を思うと、
Haskellで書いたプログラムのモジュール性が低いと言えなくもない。
ただ、元々副作用無しで書こうと思っていたコードに、
副作用を加えるというのは、そもそも設計段階で間違っていたとも言える。
ここで言う副作用の例は、性能評価コードや、ロギング等のための、
呼び出しカウント、ファイル出力などを考えている。
でもこういうのは他の代替可能な手段があるかもしれない。
始めからIdモナドで書けばいい、と言ってしまえばそれまでだけど。
この辺の議論ってどっかに書いてないかな。
0178デフォルトの名無しさん
2006/06/12(月) 06:41:110179デフォルトの名無しさん
2006/06/12(月) 07:32:330180デフォルトの名無しさん
2006/06/12(月) 07:56:570181デフォルトの名無しさん
2006/06/12(月) 07:59:160182デフォルトの名無しさん
2006/06/12(月) 11:30:400183デフォルトの名無しさん
2006/06/12(月) 19:07:160184デフォルトの名無しさん
2006/06/13(火) 14:00:580185デフォルトの名無しさん
2006/06/14(水) 21:56:330186デフォルトの名無しさん
2006/06/15(木) 22:47:18ピザには間違いない。
0187デフォルトの名無しさん
2006/06/17(土) 07:48:340188デフォルトの名無しさん
2006/06/17(土) 09:40:35実際の開発では、プログラムの開始・展開・終了の間で
作業者間でのコミュニケーションが行われ、そこのコストがもっとも大きいというのに。
0189デフォルトの名無しさん
2006/06/17(土) 13:19:08ノンコストだろ。コミュニケーションにコストがかかるとか言ってる
>>188方がDQNだろ
0190デフォルトの名無しさん
2006/06/17(土) 14:25:09したまえ
0191デフォルトの名無しさん
2006/06/17(土) 20:41:33俺にはこのボケに対するうまいツッコミが思いつかない
0192デフォルトの名無しさん
2006/06/18(日) 09:54:29誰が学者様なんだ?
コミュニケーションにコストがかかるのは承知だが、
なんでそれをHaskellのスレで議論する必要が?
もっとテクニカルな話しようや
0193デフォルトの名無しさん
2006/06/18(日) 10:01:35研究的内容について議論してくれ。
0194デフォルトの名無しさん
2006/06/18(日) 11:58:330195デフォルトの名無しさん
2006/06/18(日) 15:41:09「新規性」だよ
0196デフォルトの名無しさん
2006/06/18(日) 23:12:56んな高尚なもの求められても。。そういうのは大学のお友達とたっぷり議論するといいよ。
0197デフォルトの名無しさん
2006/06/18(日) 23:15:25何かHaskellの新しい機能を触ろう、ってんならagreeだが。
0198デフォルトの名無しさん
2006/06/19(月) 17:24:470199デフォルトの名無しさん
2006/06/19(月) 17:34:250200デフォルトの名無しさん
2006/06/19(月) 23:18:190201デフォルトの名無しさん
2006/06/21(水) 01:36:110202デフォルトの名無しさん
2006/06/22(木) 06:15:11Haskellの超絶技巧なテクニックだとか、こんなアプリをHaskellで書いた!とか、
こんな新しいプログラムの書き方がある!とか
そういう内容でいいんじゃないの
0203デフォルトの名無しさん
2006/06/23(金) 00:00:10お前このスレ立てただろ。文体からすぐわかんだよ。
自分ひとり選民意識でいるんじゃねぇよ。
↓↓↓
プログラム板から来ました
http://pc8.2ch.net/test/read.cgi/php/1150778053/
0204デフォルトの名無しさん
2006/06/24(土) 15:40:430205デフォルトの名無しさん
2006/06/27(火) 21:48:430206デフォルトの名無しさん
2006/06/28(水) 01:51:370207デフォルトの名無しさん
2006/06/28(水) 02:26:49理由をぜひ聞きたかったりするんだが…。
これから勉強しようかと思ってるけど、ひょっとして無駄?
0208デフォルトの名無しさん
2006/06/28(水) 06:23:53自分の「ものの考え方」のバリエーションが広がるだけでも
全く無駄ではないよ
0209207
2006/06/28(水) 08:35:59あっ、いや、ある程度はもう知ってるのだけど、
Haskellは実用的にも使えるのではないかと思って
標準的な関数の使い方を全て勉強しようかという
矢先に >>206 を見たので…。
0210デフォルトの名無しさん
2006/06/28(水) 17:52:27それほど効率が求められないものや、
あるいはそれほど効率に影響のないプログラムなら問題ないけど、
効率上、副作用は必要悪だと思うなあ。
0211デフォルトの名無しさん
2006/06/28(水) 18:10:210212デフォルトの名無しさん
2006/06/28(水) 23:24:57書籍も出たことだし、Smalltalkやlisp/schemeに迫る程度には「流行る」かと。
あまり理由も示さずに間抜けな断言をするのは研究者としてどうなんだろう。
あと、副作用があれば参照が使えるので例えば再帰の代わりにforループが書ける。
Cみたいなクイックソートが書ける。副作用は、Haskell自体の遅さというより、
効率的なプログラムが書けるかどうかに掛かってくる、ということを>>210は言いたかったんでは。
0213デフォルトの名無しさん
2006/06/28(水) 23:33:02Haskellの利点を踏まえた上でそんなことを軽々しく断言されても…ちょっとアレな人な気がする
どこの馬の骨ともわからん(プログラミング言語の?)研究者が何と言おうと、流行るもんは流行るし。
0214デフォルトの名無しさん
2006/06/28(水) 23:55:56そもそも流行っている事が最も重要な人は使っていないんじゃないかな。
0215デフォルトの名無しさん
2006/06/29(木) 00:12:06>そもそも流行っている事が最も重要な人は使っていない
これの日本語的な意味がわからん。読めん。
0216デフォルトの名無しさん
2006/06/29(木) 01:13:180217デフォルトの名無しさん
2006/06/29(木) 02:45:50仕様を理解してもらえないと思う。
0218デフォルトの名無しさん
2006/06/29(木) 03:20:340219デフォルトの名無しさん
2006/06/29(木) 05:28:17forループと(効率的に)同等なものは破壊的代入を使わなくても書ける。
Haskellでも破壊的クイックソートは書ける。
リストに対しては書けないけど、これはむしろ当然だろう。
副作用があることと、代入スタイルのプログラミングができることを混同しているように見える。
「必要悪」とされるべきは代入スタイルのプログラミング。
Haskellには副作用は無いけど、代入スタイルのプログラミングをサポートしているから、
これをHaskellが遅い理由にするのはおかしい。
0220デフォルトの名無しさん
2006/06/29(木) 05:52:08100MB を超えるような巨大配列を取り扱うような
科学技術計算でも大丈夫ですか?
参照透明性ということで、配列要素を一部分変更するたび毎に
配列の全コピーし直してるのかと思っているのですが大きな誤解ですか?
どうしても副作用のあるコードを書きたくなってしまいます。
0221デフォルトの名無しさん
2006/06/29(木) 06:12:19Haskellの配列は二系統あって、一つが変更毎に完全なコピーを作るIArrayインタフェースで、
もう一つがコピーなしで破壊的操作ができる代わりにモナドを通した操作しか認めないMArrayインタフェース。
だから、この点に関しては問題ない。科学技術計算をする上で他に障害が無いかは保障しかねるけど。
0222デフォルトの名無しさん
2006/06/29(木) 06:40:16MArray インターフェースですか。
そういうのが有ったんですね。それで勇気が出ました。とっても重要な情報です。
多分、他には根源的な支障はないと思います。
あともう一つ高速化手法として
最近流行の並列プログラミングもしたいのですが、
こっちは Haskell ではまだまだの段階なのかな?と勝手に思っています。
0223デフォルトの名無しさん
2006/06/29(木) 08:38:35IORef等への参照セルへの代入は「副作用」として知られていますが何か?
少なくとも空間効率を意識したプログラミングは副作用がないとできない。と思う。
時間効率についてはオーダーの議論で逃げればいいけど。
0224デフォルトの名無しさん
2006/06/29(木) 08:43:28>仕様を理解してもらえないと思う。
C++のバッドノウハウ集や、Javaの複雑なgenericsを理解できるなら、
Haskellの多相型や型クラスを理解するのはそう難しくはないでしょ。
GoFのVisitorやMementoパターンが理解できるなら、高階関数を使いこなすのも特に問題ないかと。
どれも一時期流行したもの。
Haskellが凡人に理解できないと思うのは、それこそ選民意識じゃない?
0225デフォルトの名無しさん
2006/06/29(木) 09:11:42言葉遣いの問題だが、副作用ってのは「関数適用や式の評価に際して計算以外のことを行うこと」
であって、IORefの操作はこの定義に当てはまらないので副作用とはいえないと思う。
そのためにわざわざ「代入的プログラミング」という言い方をしたんだが。
>少なくとも空間効率を意識したプログラミングは副作用がないとできない。と思う。
>時間効率についてはオーダーの議論で逃げればいいけど。
言葉の問題を除いて、同意。
0226デフォルトの名無しさん
2006/06/29(木) 15:06:190227デフォルトの名無しさん
2006/06/30(金) 01:40:42する気にならないですけどね。
0228デフォルトの名無しさん
2006/06/30(金) 05:45:34あ〜。いいんですよ。とりあえず速度は。
最終的にどんな感じのプログラムになるか実際に見てみたいんですから。
それに計算対象や入力によって速度をそれほど気にしない場合もありますし。
0229デフォルトの名無しさん
2006/06/30(金) 08:10:05Haskellでさくっとかいた実装の出力と比較して検算する (Nバージョンプログラミング)
というのはアリかもしれないね。
0230デフォルトの名無しさん
2006/06/30(金) 08:26:59わざわざ反論するのも面倒だけど、言葉使いの話をするならば、反論させてもらう。
何度も書くが、副作用(side effect)ってのはIORefへの代入も含むと一般に考えられている。
例えばSICPで、Schemeに代入の機能を入れる所で、side effect bugという言葉が出てくるし、
何より IORefを扱うモナド IOモナドは「副作用」を扱うモナドじゃないか。
IOモナドやState使わないと代入は純粋関数的に書けないでしょ。
適当にぐぐっただけでも(Cleanのマニュアルだが)
http://sky.zero.ad.jp/〜zaa54437/programming/concepts/index3.htm#a6
>代入は、純粋な関数型言語では排除されている。というのも、代入演算子は副作用(side effect)を
>伴う為、参照透明性(referential transparency)が破壊されてしまうからである。
「狭義の副作用」という言葉があるのかどうかは知らないが、一般には代入も副作用と考えられている。
0231デフォルトの名無しさん
2006/06/30(金) 09:46:16誤解を招く言い方だったが、俺が指摘したかったのはそこじゃない。
>何より IORefを扱うモナド IOモナドは「副作用」を扱うモナドじゃないか。
違う。「入出力」を「副作用なしで」扱うモナドだ。
ここで言う「入出力」にはIORefの操作なんかも含める。
なんでこの区別にこだわるかというと、
・>>210は「Haskellに副作用が無い」という前提で話している。
だから少なくともこの文脈ではHaskellのIOを副作用と呼ぶのは不適切。
・unsafePerformIOなどによって導入される本物の副作用との区別ができたほうが良い。
という理由から。
0232デフォルトの名無しさん
2006/06/30(金) 12:27:10IOモナドは副作用を陽に扱わない。
Haskellは、副作用を表現するIOモナドを純粋関数的に「繋いで」、mainとして定義するスタイル。
繋いだアクションが逐次実行されることで、実行形式は副作用を伴うプログラムとして動作する。
一方、unsafePerformIO はIOモナドとは違い、Haskellの遅延評価のステップの途中で
本当に「副作用的に」評価される(純粋関数の枠を壊している)。
それを言いたいのは分かった。
>・>>210は「Haskellに副作用が無い」という前提で話している。
> だから少なくともこの文脈ではHaskellのIOを副作用と呼ぶのは不適切。
どうしてその前提が読み取れるのか分からんけど。
というか明らかに IOモナドを副作用を扱うモナドでそ。unsafePerformIOと区別したいのは分かったが。
Haskellで副作用を表現できることはもはや常識なわけで、
「Haskellは副作用を(表面上)追い出した為にIOモナドというややこしい形でしか扱えない。しかし副作用は効率的なプログラムを扱う上で必要悪だよな。もっと簡単にならんのか?」
という風に読んだ。
0233とおりすがり
2006/06/30(金) 22:38:41・副作用をいわば「ランタイム側に追い出す」ための仕組みがIOモナド。
そういう意味でIOは副作用を扱っているといえる。
(・でも本当に副作用を持つ禁断の関数も実はある。)
ってことでFA?
状態機械の仕様をフローチャート的にではなく構成的に
定義できるのってキモチイイな
do構文使ってると普通の逐次処理言語とあまり変わらないけど。
まあ気分の問題で。
0234デフォルトの名無しさん
2006/06/30(金) 23:03:53そう。というかlet文も考えようによっては逐次型っぽい。
for文やwhile文がなくて、オブジェクトのアップデートができない事を除けば、
手続き型言語も関数型言語もそんなに変わらない。
更にHaskellは純粋関数的なので順序を気にしなくていいんだけどね。
0235とおりすがり1
2006/06/30(金) 23:52:32= 1:1:2:3:5:8:12 ....
これはおなじみHaskell版フィボナッチ数列
遅延評価の例として一度はお目にかかるという。
これはリストのある要素の値を
遅延評価を利用して
同じリストの手前の要素から構成しているのがミソ。
#解説は「フィボナッチ Haskell」 でググるといっぱいでてくるので略
0236とおりすがり2
2006/06/30(金) 23:55:06これって要するに最終的には
main = (IO a) >>= (IO b) >>= (IO c) >>= (IO d) ......
というふうに(IO x)を>>=でつないだ数珠繋がりに簡約されるわけで。
(IO x)中にはキー入力とか、画面出力とか、メモリの上書きとか
逐次処理言語の命令コードやサブルーチンのようなものが詰まってる。
>>232とかで言ってるアクションてやつ
ちなみに(return x)で作った(IO x)はNOP(何もしない)が入ってるとみなす。
0237とおりすがり3
2006/06/30(金) 23:59:14ループや分岐に相当する(IO x)は無いってこと。
なぜそれでこまらないのかというと、
フィボナッチ数列のときに
ある要素を決定するのにそれより前の要素の値を利用したように
条件分岐で次の処理として(IO y)を繋げようか(IO z)を繋げようか決めるのに
それより前の(IO x)の値をみて決める事ができるから。
あるいはそこで打ち切ってプログラムを終了してもいい。
つまり、Haskellで副作用のあるプログラムを書くってことは
フィボナッチ数列を定義するように
コマンド列を定義しているようなもの
0238とおりすがり4
2006/07/01(土) 00:03:08そういう風にオイラは理解したわけです。
0239デフォルトの名無しさん
2006/07/01(土) 06:11:520240デフォルトの名無しさん
2006/07/01(土) 06:30:18>どうしてその前提が読み取れるのか分からんけど。
>「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.
0241デフォルトの名無しさん
2006/07/01(土) 08:52:270242デフォルトの名無しさん
2006/07/02(日) 00:07:46なるほど、完全に同意しましたです。すまない。
更に How to declare an imperative の文がとてもわかりやすい。ありがとう。
入出力、といえば副作用と思っていたけど、同期ストリームもそうだよな。
自分ではhGetContentsくらいしか使わないけど。
linear typeで入出力ができるのもCleanのマニュアルの序章で分かる(world as value)。
しかし。。。continuationでどうやって入出力するのか??
>それとも、「副作用」という言葉をそういう意味で使うことを支持する典拠があったりするのか?
あなたが言うように、副作用と入出力を混同していた。典拠はない。
0243242
2006/07/02(日) 00:15:21ただ、hGetContentsから得たStringは遅延評価の度にファイルやネットワークデバイスから読み出される。
(データがなければブロックする)
この「遅延読みString」を処理する部分は旧来のストリーム・プログラミングっぽい(よね?
0244デフォルトの名無しさん
2006/07/06(木) 22:15:48再帰による33回目の関数呼び出しとそうでない呼び出しで意味が大きく変わってくる。
0245デフォルトの名無しさん
2006/07/06(木) 23:06:29うそつけ。Cの仕様書にそんなこと書いてないぞ。
0246デフォルトの名無しさん
2006/07/07(金) 04:38:43for のネストの回数とか意外なものに、
最低保証回数が仕様として決められている。
0247デフォルトの名無しさん
2006/07/07(金) 06:46:28だが、再帰回数はない。
0248デフォルトの名無しさん
2006/07/07(金) 08:25:320249デフォルトの名無しさん
2006/07/07(金) 08:32:38少し考えれば、再帰を32回まで完全保証する事が不可能だって分かるだろ。
0250デフォルトの名無しさん
2006/07/08(土) 09:19:470251デフォルトの名無しさん
2006/07/08(土) 09:22:30ああ、確かにそうだな。
0252デフォルトの名無しさん
2006/07/09(日) 01:07:02ローカル変数がスタックに取得される仕様だと
消費されるスタックの量が予測できないだろ。
ローカル変数と配列の最大数×配列サイズの制限?から再帰の
最大数を決めてもあまり意味があるとも思えない。
ローカル変数をスタックに取らないといけない決まりも無いけど
ほとんどの実装で受け入れられないモノを標準仕様を
するわけにはいかなかったんだろう。
ってスレ違いごめん
0253デフォルトの名無しさん
2006/07/09(日) 20:45:30そんなことも分からんやつしか居ないの?
0254デフォルトの名無しさん
2006/07/09(日) 21:39:500255デフォルトの名無しさん
2006/07/09(日) 21:49:200256デフォルトの名無しさん
2006/07/09(日) 22:30:350257デフォルトの名無しさん
2006/07/09(日) 22:34:52スレ違いの議論はこの辺で終了して下さい
0258デフォルトの名無しさん
2006/07/10(月) 00:31:31だからその固定の変数を最大いくつ宣言できるか判らないでしょ
0259デフォルトの名無しさん
2006/07/10(月) 02:01:36すれ違いなのでこの辺までにしとこう。
0260デフォルトの名無しさん
2006/07/10(月) 06:35:50>>256
0261デフォルトの名無しさん
2006/07/10(月) 12:53:18偉そうに大嘘で締めないように。無能はしゃしゃり出ちゃいやん。
ま、スレ違いだからやめとくか。
0262デフォルトの名無しさん
2006/07/10(月) 13:38:02少々脱線した所でどうでもいい気もするけどね。
0263デフォルトの名無しさん
2006/07/10(月) 13:52:49面白い話でもないしw
0264デフォルトの名無しさん
2006/07/10(月) 22:01:26細かいな。記憶クラスが auto の配列って言えばいいのか?
>>261
C99のマニュアル読んでね。
0265デフォルトの名無しさん
2006/07/10(月) 22:17:04int a[hoge()];
なんてやっても動くじゃん。
いままで関数内で捨てちゃう配列にmalloc使っていたのは無駄だったのか。
HaskellとRubyばっかり使っていたせいで、Cはメモリ管理がめんどくさい言語
だとばかり思っててちゃんと調べてなかった。
0266デフォルトの名無しさん
2006/07/10(月) 22:31:160267デフォルトの名無しさん
2006/07/10(月) 22:34:350268デフォルトの名無しさん
2006/07/10(月) 22:46:53しかしそう言い直した途端にスタックの話じゃなくなる罠。
いつまでもひきずってもつまらんので、Haskellの豆知識でも。
GHCでコンパイルされたプログラムがスタックをどのように使うかはわかりにくい。
再帰呼び出しでスタックが深くなっているようにも見えないのにオーバーフローを起こしたりする。
これは、スタックの消費が、呼び出しの深さではなく正格な関数の適用のネストの深さに比例するためだ。
例えばg x = x + 1 - 1 + 1 - ..たくさん.. - 1という関数を定義すると、呼び出しの深さは一であるにも関わらず
スタックを大量に消費する。正格な関数である(+)と(-)の適用が深くネストされているからである。
0269デフォルトの名無しさん
2006/07/11(火) 09:42:39できないの?
0270デフォルトの名無しさん
2006/07/11(火) 11:27:31嘘を拡大するためだけに前言撤回で復活しなくてよろしい。
0271デフォルトの名無しさん
2006/07/11(火) 19:11:00未評価の式はヒープに保存されているので、それ自身はスタックを消費しない。
スタックが溢れるのは式を評価しようとしたとき。
0272デフォルトの名無しさん
2006/07/14(金) 00:15:500273デフォルトの名無しさん
2006/07/14(金) 01:15:45なんで俺らがそこまでしなきゃいけないわけ?お前何か勘違いしてない?
0274デフォルトの名無しさん
2006/07/14(金) 01:28:550275デフォルトの名無しさん
2006/07/14(金) 03:16:340276デフォルトの名無しさん
2006/07/14(金) 11:25:170277デフォルトの名無しさん
2006/07/14(金) 17:56:550278デフォルトの名無しさん
2006/07/15(土) 19:52:26♪ぼくらは たびびと
ときの たびびと♪
0279デフォルトの名無しさん
2006/07/16(日) 04:35:58哀れな人たちの嫉妬を一身に買って出てるよね。
0280デフォルトの名無しさん
2006/07/16(日) 14:04:58知的な奴は、そういうことを考えずに自己拡張しまくりのLispを使う。
0281デフォルトの名無しさん
2006/07/18(火) 13:14:510282デフォルトの名無しさん
2006/07/19(水) 01:50:46両方とも、ちょっとしか解ってないが、現時点ではClean の方が良さげに思える。
でも、一般的にはHaskell の方が流行ってるみたい…。
なぜなんでしょう?
Haskell の方が良い!という人の意見が聞きたいです。
0283デフォルトの名無しさん
2006/07/19(水) 02:56:48個人的にはCleanって閉鎖的な印象を受けるからHaskellに流れてるだけ。
どっちも元はMirandaだからCommon LispとSchemeくらいにしか違わないんじゃないの?と
ろくすっぽCleanを知らないで書いてみる。
0284デフォルトの名無しさん
2006/07/19(水) 03:02:040285デフォルトの名無しさん
2006/07/19(水) 03:58:511 :ネットナンパ師φ ★ :2006/07/19(水) 02:23:23 ID:???0
http://news.searchina.ne.jp/disp.cgi?y=2006&d=0718&f=national_0718_002.shtml
http://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イギリス
【ニュー速+】http://news19.2ch.net/test/read.cgi/newsplus/1153243403/
(以下参考情報)
インド人は、あんだけ人間いて夏季オリンピックで銅1個しか取れない劣等民族。
自慢の理系でも数学オリンピックは毎年中国が優勝。アメリカが2位。この2国が指定席で、インドなんてランク外。
http://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位-韓国
なお参加資格は高校生までです。今すぐではなく次世代、次次世代に効いて来るものです。
それが教育の深さ、恐ろしさ。
0286デフォルトの名無しさん
2006/07/19(水) 05:09:410287デフォルトの名無しさん
2006/07/19(水) 05:20:57数学オリンピックでは中国とか凄いんだけどねえ。
なぜか欧米の方が偉大な数学者は多いよね。
インドだってラマヌジャンっていう大天才がいたし。
0288デフォルトの名無しさん
2006/07/19(水) 10:28:12いかに処理しきるかっていう官僚的作業だろ?
それでも俺には逆立しても解けないが。
ノーベル賞フィールズ賞取る様な何年もかけて倒す仕事とはスケールが違い過ぎるから
1kmレースを3速ギアでトップで駆け抜けたからといって
そのマシンが300kmレースを6・7速ギアでトップでゴールできるわけじゃない。
0289デフォルトの名無しさん
2006/07/19(水) 10:57:38非素人の見解披露希望。
0290282
2006/07/20(木) 02:58:24英語、苦手でして…。
単語を拾い読みしてみましたが、Haskell は研究用で Clean は実用言語という所でしょうか?
>>284
ぜひ、具体的意見をお聞かせ下さい。
0291デフォルトの名無しさん
2006/07/20(木) 20:36:18メモリも食わない
Haskellは遅い
0292デフォルトの名無しさん
2006/07/21(金) 00:42:59echo 'main = readFile "b.txt" >>= putStr . show . (\x->x*x*x) . read'> c.hs && echo 4 > b.txt && runghc.exe c.hs
これと同じことやってみ。
0293デフォルトの名無しさん
2006/07/21(金) 09:36:40は、数学オリンピックについて何も知らない。
0294デフォルトの名無しさん
2006/07/21(金) 09:39:46「Microsoft Command Shell(開発コード名:Monad)」という名称が付けられていた。
0295デフォルトの名無しさん
2006/07/21(金) 09:48:28nobsunみたいに和訳してくれる人は普通とても少ないし。
0296282
2006/07/22(土) 03:36:21なる程、Haskell の利点としては
@スクリプト言語的な使い方ができる
AIOモナドだと簡潔に書ける
といった所でしょうか。
@の使い方は面白いかもしれませんね。
Aはどうなんでしょう?
エラー処理とかを考慮したプログラムも簡潔に書けるのでしょうか?
0298デフォルトの名無しさん
2006/07/22(土) 05:01:32関数型言語のスタンダードという役割を担うために作られた言語。
だから、関わっている人が多いし、ライブラリも多い。
Clean
関わっている人が少なく、ライブラリも少ない。
異端であるがゆえに、最新の話題がCleanから出てくることはほとんどない。
という違いもある。
勉強目的ならHaskellだな。
Haskellといえばモナドだけど、Cleanでも同じようなロジックで書ける。
両者の違いは構文糖衣的な違いで、中身は似たようなもの。
Cleanで書くと、たらい回す変数を山のように書いて、文字数が2倍ぐらいになる。
Haskellはプログラムが美しい、Cleanは実行速度が速い、と言える。
0299デフォルトの名無しさん
2006/07/23(日) 00:13:150300デフォルトの名無しさん
2006/07/23(日) 00:15:440301デフォルトの名無しさん
2006/07/23(日) 00:52:360302デフォルトの名無しさん
2006/07/23(日) 01:34:550304デフォルトの名無しさん
2006/07/30(日) 10:30:010305デフォルトの名無しさん
2006/07/30(日) 10:58:56次版で入らんかな。
0306デフォルトの名無しさん
2006/07/31(月) 18:40:180307デフォルトの名無しさん
2006/08/02(水) 17:42:500308デフォルトの名無しさん
2006/08/03(木) 20:24:150309デフォルトの名無しさん
2006/08/04(金) 16:48:430310デフォルトの名無しさん
2006/08/05(土) 13:39:27http://itpro.nikkeibp.co.jp/article/COLUMN/20060801/244812/
記事のタイトル、センス無い
0311デフォルトの名無しさん
2006/08/05(土) 15:42:44> 「本物のプログラマはHaskellを使う」というタイトルは
> 「本物のプログラマはFORTRANを使う」や「本物のプログラマはPascalを使わない」
> といった有名なフレーズをもじったものです。
って書いてあるじゃんか。自分が知らない読んでない理解できないからって
不当に他人を卑しめるのは止めような。
0312デフォルトの名無しさん
2006/08/05(土) 16:30:560313デフォルトの名無しさん
2006/08/05(土) 16:53:19「本物のプログラマはHaskellを使わない」のほうがしっくりくると言われればそうかもしれないが。
0314デフォルトの名無しさん
2006/08/05(土) 17:45:17決してHaskellなどという"軟弱な"言語なぞ使わんと思うんだが?
0315デフォルトの名無しさん
2006/08/05(土) 20:09:59まだ少ししか読めてないけど
0316デフォルトの名無しさん
2006/08/05(土) 20:33:27参考
http://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
http://www.genpaku.org/realprogrammerj.html
0317デフォルトの名無しさん
2006/08/06(日) 00:46:32一昔前のgauche-devel-jpでのshiroタンとのやりとりを見る限りコンピュータの
アーキテクチャの根本が理解できていない人としか思えなかったんだが。
まぁHaskellと戯れているうちはデータがメモリ上でどう表現されているかなんて
知らなくても生きていけるってことかな。
0318デフォルトの名無しさん
2006/08/06(日) 01:08:000319デフォルトの名無しさん
2006/08/06(日) 09:28:30優しく見守ってやれ。
0320デフォルトの名無しさん
2006/08/06(日) 16:03:48似た名前だと思っていたら、あれと同一人物なのかよ……。
0321デフォルトの名無しさん
2006/08/07(月) 00:56:53偶然一致するようなハンドル名なのかどうか判断できないから確証はないけど。
未踏にも顔出してたと思ったけど、どんな成果だったのかな。
0322デフォルトの名無しさん
2006/08/09(水) 18:27:04ttp://page.freett.com/shelarcy/
0323デフォルトの名無しさん
2006/08/10(木) 09:03:140324デフォルトの名無しさん
2006/08/10(木) 18:39:34グラスゴウハスケルと似てるね
0325デフォルトの名無しさん
2006/08/11(金) 01:41:09うわぁっ、すごぉっ、すげぇー!って、日常用語にあるけど、
グラスゴウスケールと似てるね。
0326デフォルトの名無しさん
2006/08/11(金) 07:51:06うわぁっ、すごぉっ、すげぇー!
と
グラスゴウハスケルは似てるわけか
0327デフォルトの名無しさん
2006/08/16(水) 20:04:53「うわぁっ、すごぉっ、すげぇー!」を使って
長文を作りなさい
0328デフォルトの名無しさん
2006/08/17(木) 05:51:34むやが及ん、すべてが、と思った。うわぁっ、すごぉっ、すげぇー!
不要なら、それが、それを出してきたところでもないのなのだ。うわぁっ、すごぉっ、すげぇー!
まだ比べできて、この本にもある。うわぁっ、すごぉっ、すげぇー!
すでに、人を手をするのを出している、バカな気が、この本のせいと、一歩だと思うんだ。うわぁっ、すごぉっ、すげぇー!
0001200-ROM人は、もう一つの問題になるので、ついにこれには、ホントには、下の時代にはその時のせいをつくるなものを読んでいるのも、それはそれを92020202/1創作連中所持とかの時代にもある。うわぁっ、すごぉっ、すげぇー!
あるいは物語もあった。うわぁっ、すごぉっ、すげぇー!
なお、その号のこともずっとさておきけれど、感じ。うわぁっ、すごぉっ、すげぇー!
プロットをすると、という感じ。うわぁっ、すごぉっ、すげぇー!
で、すでにシャープに、ほとんど無節操ないのかな。うわぁっ、すごぉっ、すげぇー!
短距離では、その戦時のお解釈年前の大解決冷や汗指標はほとんど開かかとかを手をもらった芸ばかり。うわぁっ、すごぉっ、すげぇー!
0329デフォルトの名無しさん
2006/08/17(木) 10:12:370330デフォルトの名無しさん
2006/08/17(木) 22:03:17日本語による近代美術だ
0331デフォルトの名無しさん
2006/08/18(金) 17:06:460332デフォルトの名無しさん
2006/08/19(土) 05:42:400333デフォルトの名無しさん
2006/08/21(月) 20:21:49|┃ /
|┃ ≡ _、_ < 話は全部聞かせて貰ったぞ!
____.|ミ\___( <_,` ) _ \
|┃=___ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|┃ ≡ ) 人 \ ガラッ
0334デフォルトの名無しさん
2006/08/27(日) 11:24:42やはり、アホな俺にはjavaが似合ってるのかもしれん。
0335デフォルトの名無しさん
2006/08/27(日) 12:05:04一章からわりと技巧的なことをやっているので無理もないと思う。
とにかく慣れが重要なので、サンプルコードをコピペしていじりながら
慣れるのが良いんじゃないか。
意味の分からないところは2chで聞けばいいし。
0336デフォルトの名無しさん
2006/08/27(日) 14:42:25アドバイスありがと。
とにかく触りながら地道にやってみるか。
0337デフォルトの名無しさん
2006/08/27(日) 16:36:09入門書としては
出来がいいようなキガスルな
0338デフォルトの名無しさん
2006/08/27(日) 19:10:52うわぁっ、すごぉっ、すげぇー!
0339デフォルトの名無しさん
2006/08/27(日) 20:34:230340デフォルトの名無しさん
2006/08/27(日) 23:24:040341デフォルトの名無しさん
2006/09/03(日) 11:37:28みんな本当にこう感じてるのか?
0342デフォルトの名無しさん
2006/09/03(日) 16:18:31カコイイ
0343デフォルトの名無しさん
2006/09/03(日) 17:38:49すげー
Haskoreってやつを使っているのかな。
0344デフォルトの名無しさん
2006/09/03(日) 17:51:04最後の別のムービー紹介で
リーリ・カル・マジーロがトップに来てるのにワロタw
0345デフォルトの名無しさん
2006/09/03(日) 17:55:45いまサウンドボードがイカれてて何がおもしろいのかサーッパリわからなかったんで
何を紹介しているムービーなのか解説してもらえないでせうか。
0346デフォルトの名無しさん
2006/09/03(日) 18:12:03音楽のリズムパート(って正しい表現?)を記述したHaskellのコードがあって、それがBGMとして流れている。
コードを編集してロードしなおすとそれに連動して音楽も変わる。
0347デフォルトの名無しさん
2006/09/04(月) 08:14:340348345
2006/09/05(火) 01:10:24遅ればせながらサンクス。週末にでもサウンドボード調達してこよ。
0349345
2006/09/14(木) 00:06:08持ってる範囲内での記述なんですか?Lisp屋さんだとそれ専用のミニ言語平気で
作っちゃったりしてるけど似たようなものなのかな。
0350デフォルトの名無しさん
2006/09/14(木) 01:16:320351デフォルトの名無しさん
2006/09/14(木) 02:12:13http://en.wikipedia.org/wiki/Haskore
こんなものがあったとは。。
0352デフォルトの名無しさん
2006/09/19(火) 23:56:560353デフォルトの名無しさん
2006/09/20(水) 00:02:580354デフォルトの名無しさん
2006/09/20(水) 00:28:57なんだかすっげえワクワクしてきたぞ!
0355デフォルトの名無しさん
2006/09/29(金) 08:34:08http://www.haskell.org/ghc/docs/latest/html/users_guide/runtime-control.html#rts-options-gc
GHCのマニュアルによると、スタックはヒープ上に取られ、必要に応じて伸長する。
ヒープを使いきっていないのにスタックオーバーフローが起こるのは、無限ループに陥ったときに
メモリを使い尽くさないように上限を定めているだけで、
# スタックの大きさの上限を40億バイトにする
./a.out +RTS -K4G
のように上書きできる。
0356デフォルトの名無しさん
2006/10/06(金) 17:47:48cons :: a -> [a] -> [a]
cons a b = a : b
0357デフォルトの名無しさん
2006/10/07(土) 23:18:370358デフォルトの名無しさん
2006/10/08(日) 09:08:420359デフォルトの名無しさん
2006/10/21(土) 02:35:42ありがとーおー ぼくのー とーもだちー
ハスカァール にー あわせてー くぅー れー ぇーてぇー
0360デフォルトの名無しさん
2006/10/21(土) 18:26:290361デフォルトの名無しさん
2006/10/21(土) 18:55:020362デフォルトの名無しさん
2006/10/21(土) 19:09:55【Haskell】あらいぐまハスケル【関数型言語】
0363デフォルトの名無しさん
2006/10/24(火) 00:08:440364デフォルトの名無しさん
2006/10/24(火) 00:13:15単に話題になることが多いだけじゃないかと。
0365デフォルトの名無しさん
2006/10/24(火) 00:35:180366デフォルトの名無しさん
2006/10/24(火) 22:24:58飽きるまでなら付き合おう。
で、どこまで理解してる?
0367デフォルトの名無しさん
2006/10/24(火) 22:35:23qsort _ [] = []
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ってなによ
0368デフォルトの名無しさん
2006/10/24(火) 22:52:17ってのは、これからQsortという名前のモジュールを定義する、
詳細は以下である、と言う意味。(whereは「ただし」とでも読むべし)
モジュールというのは、おおざっぱに言うと、
一つのファイル中で定義されたものたちをひとまとめにして名前をつけたもの。
この場合はQsortモジュールはただ一個の定義(qsort)だけからなる。
プログラムの他の部分からqsortを使いたいときは、
import Qsort
として、Qsortモジュールの定義を使うことを宣言する。
0369初心者A
2006/10/24(火) 23:03:51なるほど。Javaでいうところのクラスみたいな感じか
import文もJavaといっしょだな
モジュール ≒ Javaのパッケージ
定義 ≒ Javaのクラス
関数 = Javaのメソッド
ここで疑問点が発生
下のような2行だけ書いたファイルでもOKのはずだけど
これはなんで module とか where とか 定義名 がいらないの?
foo x y = x + y
hoge = 2
0370デフォルトの名無しさん
2006/10/24(火) 23:09:22>これはなんで module とか where とか 定義名 がいらないの?
module ... whereの部分は省略することができて、その場合
module Main(main) where
と書かれているとみなされる。
(main)という括弧書きは、モジュール中の定義のうち、mainだけを外部に公開する、
という意味。括弧書きがないときは、全ての定義が公開される。
0371デフォルトの名無しさん
2006/10/24(火) 23:25:53次2行目
qsort _ [] = []
これは qsort が 定義名 でいいのかな
_(アンダースコア) は 変数名っぽいけどそんなわけないよな
そして、 [ ] (配列) = [ ] (配列)
???
わからない
0372デフォルトの名無しさん
2006/10/24(火) 23:39:37[]は空リスト。
_は厳密には変数名じゃないけど、そう考えても大して問題はない。
この行では、_がqsortの第一引数、[]が第二引数になっている。
qsort _ [] = []
は、qsortの第二引数が空リストのとき、第一引数に関係なく、結果は空リストである、と読む。
ここで定義しようとしているqsortは、第一引数として比較関数、第二引数としてリストを取り、
ソートされたリストを返す関数だから、この行は、「空リストをどんな比較関数を使ってソートしても結果は空リスト」と
言っていることになる。
0373デフォルトの名無しさん
2006/10/25(水) 00:04:32Webで探したらこんな文章発見
>でも比較関数って何?って思いますよね。
>比較関数とは2つの引数を持ち、
>引数1が引数2より小さい場合は負の整数、
>同じ場合は0、
>引数1が引数2より大きい場合は正の整数を返します。
うーん・・・
_ (アンダースコア)がどういう役割なのかな、この場合 _(アンダースコア)以外はダメ?
例えば -(ハイフン)とか、ふつうのアルファベットとか
0374デフォルトの名無しさん
2006/10/25(水) 00:20:58>比較関数っていうのがよくわかんない
ここでは、引数を二つとって、第一引数が第二引数より「小さい」ときのみTrue、
そうでなければFalseを返す関数の事。
普通の意味での大小関係にしたがってTrue/Falseを返す関数を比較関数として与えれば
qsortは昇順のソートをするし、逆に数値が大きいほど「小さい」と判断する
関数を与えればqsortは降順のソートをする。さらに、例えば引数の絶対値を比べる関数を
渡せば、絶対値が小さい順にソートすることができる。
> _ (アンダースコア)がどういう役割なのかな、この場合 _(アンダースコア)以外はダメ?
仮引数の名前なので、アルファベットからなる名前を好きにつけても良い。
qsort comparer [] = []
とか。ハイフンは演算子とみなされるのでだめ。
0375デフォルトの名無しさん
2006/10/25(水) 02:19:460376デフォルトの名無しさん
2006/10/25(水) 10:17:130377デフォルトの名無しさん
2006/10/25(水) 12:05:22「お札萌え居ないのか」?
巫女萌えならここに居るが何か。
0378初心者A
2006/10/26(木) 02:47:04サンクス
また明日とかよろ
0379デフォルトの名無しさん
2006/10/26(木) 02:59:00∩___∩
| ノ|||,,.ノ ヽ、,,ヽ
/ ● ● | このスレは俺がもらうクマ
| ( _●_) ミ 以後、「AAでHaskellのお勉強」クマ
彡、 ,、、|∪| ,,,ノ
/ . ヽノ ヽ
| _r'゚lニニニl]_ ____/l
fニニニニllニニ| \[ l===ニニl]}||||||||ll]}コl|====iニコ
|l_,,=-'''~ | \... ヽ'''ニ「_,,,l⌒l。__。_]三i三三iF
| 〈,,/ヽ___)|ll [`ー'
0381デフォルトの名無しさん
2006/12/02(土) 02:06:38∩∩ ; とりあえずHelloWorld書いてみるクマ
;|ノ||` ┬-‖
__,/●●| __ | | ‖
| ; |`(_●)/ ミ . Y ‖
| .彡|∪||、 , .| | ‖
/:~ ̄ ̄ ̄ ̄:/.| | ‖
,|:::::. .......::/>> / ‖
/.::::: .. ...::::::|'(/\_/ ‖
../:.::: .. :.:::/.:/ /‖\
/.:::. ....:::..:::/.:/
' ̄ ̄ ̄ ̄ ̄ _/
|_| ̄ ̄ ̄ ̄|_|
0382デフォルトの名無しさん
2006/12/02(土) 02:09:08main = putStrLn "Hello, World!"
∩___∩
| ノ ヽ
/ ● ● | こうですか!?わかりません!
| ( _●_) ミ
彡、 |∪| 、`\
/ __ ヽノ /´> )
(___) / (_/
| /
| /\ \
| / ) )
∪ ( \
\_)
0383デフォルトの名無しさん
2006/12/02(土) 02:10:28できてんじゃねーかよ!
.,. -──-、 __
/. : : : : : : : : :\ 〈〈〈〈 ヽ
/.┛┗: : : : : : : : : :ヽ 〈⊃ ノ
. !.::┓┏,-…-…-ミ: ::', | | ∩___∩
{::: : : : :i '⌒' '⌒'i: : ::}ノ ! | ノ --‐' 、_\
{:: : : : : | ェェ ェェ |: : :} / 、 / ,_;:;:;ノ、 ● |
. { : : : : :| ,. |:: :;! / , ,,・_ | ( _●_) ミ
. ヾ: : :: :i r‐-ニ-┐| ::ノ/ , ’,∴ ・ ¨彡、 |∪| ミ
ゞイ! ヽ 二゙ノイゞ 、・∵ ’ / ヽノ ̄ヽ
/ _ ` ー一'´ ̄/ / /\ 〉
(___) / / /
0384デフォルトの名無しさん
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| |___|
0385デフォルトの名無しさん
2006/12/02(土) 02:30:34_ /- イ、_
簡単クマ __ /: : : : : : : : : : : (
〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
〈⊃ } {:: : : :ノ --‐' 、_\: : ::}
∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
| ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ
/ ● ● | / ,,・_ | //  ̄7/ /::ノ
| ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/
彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ
/ __ ヽノ / / // |//\ 〉
(___) / / // /\ /
0386デフォルトの名無しさん
2006/12/02(土) 02:32:43_ /- イ、_
∩___∩ あぁたたたたたたたたたたたた /: : : : : : : : : : : (
| ノ ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
/ ● | r‐っ'つ _,rノ´) {:: : : :ノ --‐' 、_\: : ::}
| ( _●) ーニ三、_,Eノ‐_r' {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
彡、 |∪|| r'´)  ̄-一ーt_j'´ 、 l: :ノ /二―-、 |: ::ノ
ゝ ヽノ _三 'ー'´) _,∩ ,,・_ | //  ̄7/ /::ノ
/ ー-−ニ ̄‐ヽ  ̄,_)' 一(´,__) `! , ’,∴ ・ ¨ 〉(_二─-┘{/
一 - ―゙ゝ_,.) ニ(__,.)-''l-‐、・∵ ’ /、//|  ̄ ̄ヽ
一‐--(_) ノ` / // |//\ 〉
(__)' / // /\ /
putStrLnってなんだクマ?
0387デフォルトの名無しさん
2006/12/02(土) 02:34:04関数名だボケ!!
,..||-ノ─ソ彡〈〈〈〈 ヽ
&. : : : : : : : : : ミ〈⊃ }
ミ.: : : : : : : : : : : : : : | |
,!::: : : :,-…-…-ミ: : : :| | ∩___∩
三 : : : :i ;;;/:' '⌒' i: : : | | | ノ --‐' 、_\
.{:: : : : |:::+;;; ェェ .|: : : : ニ ! ,,・,_ / ,_;:;:;ノ、 ● |
{ : : : :|ヾ ,.、 |:: : : :; ! / ’,∴ ・ ¨ | ( _●_) ミ
/ ヾ: :: :i r‐- ┃┐.| : : :ノ/、・∵ ’ 彡、 |∪| ミ
/ __ゞイ!ヽ┃ニ゙ノ イゞ‐ / ヽノ ̄ヽ
(___) /`' / /\ 〉
0388デフォルトの名無しさん
2006/12/02(土) 02:35:05.,..-──- 、
r '´. : : : : : : : : : :ヽ
/.: : : : : : : : : : : : : :: ヽ
,!::: : : : : ,-…-…-ミ:: : :',
{:: : : : : :i ,;ノ;´:`ゞ、i: : :.:} もともと用意されてんだよ〜っ!!
{:: : : : : :| ェェ;;;;;;;ェェ|: : : }
{ : : : : ::| ,.、 .| : : :;!∫
ヾ: :: : :i r‐-ニ┐| : riii=
ゞイ! ヽ 二゙ノ イ「 ノ
(⌒ ー ̄ ̄´ r⌒ ! 〉
ヽ弋パラッパッパ` ー'
〔勿\ ヽ ベキ
) r⌒丶) ベキ
ドカ ドカ / ! |' ∩__∩ ボキ
ドカ / /| l| ノ --‐' 、_\
( く ! ~l / ,_;:;:;ノ、 ●|
ドカ \ i | ‖彡 ( _●_) ミ
,__> ヽヽ从/ 彡 、 |∪| ミ
⊂ _ ⌒ヽ从 ⊃ ヽノ ̄⊃
0389デフォルトの名無しさん
2006/12/02(土) 02:43:42;;;;;;;;;;;;;;;;;;;;;;;;;ー-..::::ミミミ、ヾ ( );;) ヾ;;ヽ、 :i;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;://
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=-゙-`:::::::ミミ\ ゙゚''" i::ヽ;;i :: |;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:l /
;;;;;;;;;;;;;;;;;;;;;;;/::::::: :::::::.ミ::.'ヽ.........::::::::.、'_ノ l;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:i /
;;;;;;;;;;;;;;;;;,ノ:::::::::::. :::.` , 二;ニ= 、 ノ;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:ノ /
;;;;;;ー-'',::::::::::::::: ::: ' ,rェ ヽ` ヽ /;:;:;:;:;:;:;:;:;:;:;:;:;:// /
;;;;;;;;;;;;/":::::::::: _i ヽ゚ ン i` /;:;:;:;:;:;:;:;:;:;:;:;:;:ノ / /
ー' ̄::::::::::::::::: ____ /:;:;:ヽ ー /;:;:;:;:;:;:;:;:;:;:;:;:;:// / /
:::/::::::::::::::::::::: /;:;:;;:;:;:;:;:;:;:;:;:;:ヽ、 :;ー:ノミ; ::. /;:;:;:;:;:;:;:ー" ̄ / / / /
:/:::::::::::::::::::::::: /;:;:;/:::::::::::\ \;ヽ/ ̄ : /;:;:;:;:;/"/ / / / / /
:::::::::::::::;;:::::::::::: |:;:;:;:;:l ̄\:::::::::::\ );:ヽ /;:;:;:;:;:;l/ / / |\/\/ヽ∧
::::::::::::::::::;;;::::::::. \:;:;ヽ ヽ:::::::::::::'/;:;:/ /;:;:;:;:;:;:丿/ / _/ ハ あ
::::::::::::::::::::;;;;:::::: \;:;\ |:::::::/;/ /;:;:;:.:_,- " / /\ ス ら
::::::::::::::::::::::;;;;;;::: 、. \;:;\ l::/;/ / ̄/ / / / ケ い
:::::::::::::::::::::::::;;;;;;;;../ ̄ ー\ ;:;:;:/ // / / /< ル ぐ
::::::::::::::::::::::::::::;;/ ゙''ー 、_ / / / / / / !!! ま
0390デフォルトの名無しさん
2006/12/02(土) 02:46:09_ /- イ、_
, /: : : : : : : : : : : (
意味わからんわw ゚ + ` /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
’, ’,∴ ・ ¨ {:: : : : : : ::;:;: ;: ;:;: ;: ::}
∩___∩ ii ’,∴ ェェ ( : : : ::;:;: ;: ;:;: ; : ::::}
| : : ;: ヽ ! | | ! ,・,, (_l__\(: ::;:;: ;ヽ: ; : ::ノ
/ : : ;: |く^⌒!|| , ,,・_(_ヽ;:;:)ヽ: ::;:;: ;:; ::ノ
| : : ::;:ミ ::;:| ! ∴ ・ ¨C〉 (_二:;: ;::;:/
彡、 : : ::;:/⌒ ノ||!、 ’ ・∵ (、//|  ̄ヽ
/ / : : ::;:/!! / // |//\ 〉
(_/ : : ::;:/'' ̄ / // /
0391デフォルトの名無しさん
2006/12/02(土) 02:50:48バカ専用 普通 ハッカー ウィザード
┝ - - - - ┿━━━┿━━━┥
∩___∩ /)
| ノ ヽ ( i )))
/ ● ● | / /
| ( _●_) |ノ / 今はここら辺クマーー!!
彡、 |∪| ,/
/ ヽノ /
0392デフォルトの名無しさん
2006/12/02(土) 02:52:26∩─ー、
/ ● 、_ `ヽ
/ ( ● ● |つ
| /(入__ノ ミ そろそろモナドでもはじめるか・・・
、 (_/ ノ
\___ノ゙
/ 丶' ⌒ヽ:::
/ ヽ / /:::
/ /へ ヘ/ /:::
/ \ ヾミ /|:::
(__/| \___ノ/:::
/ /:::
/ y ):::
/ / /:::
/ /::::
/ /:::::
( く::::::::
|\ ヽ:::::
| .|\ \ :::::
\ .| .i::: \ ⌒i::
\ | /:::: ヽ 〈::
\ | i:::::: (__ノ:
__ノ ):::::
(_,,/\
0393デフォルトの名無しさん
2006/12/02(土) 02:53:10まだはえーーよ!
.,..-──- 、
r '´. : : : : : : : : : :ヽ
/.: : : : : : : : : : : : : :: ヽ
,!::: : : : : ,-…-…-ミ:: : :',.. _
{:: : : : : :i ,;ノ;´:`ゞ、i: : :.:} / / _____
{:: : : : : :| ェェ;;;;;;;ェェ|: : : } ./ / /// \\ ./\ ∩___∩
{ : : : : ::| ,.、 .| : : :;!./ \  ̄  ̄/./ | ノ --‐' 、_\
ヾ: :: : :i r‐-ニ┐| : r / /"\.> .__/./ / ,_;:;:ノ、 ● |
ゞイ! ヽ 二゙ノ イ /__/ <__/ | ( _●_) ミ
/⌒ `ー―''´ヽ \_ ~\彡、 |∪| ミ
/ | // \_/ ヽノ  ̄\
( く"| _____|____,,___ /  ̄Z、 /,,,,,,,, /ヽ >
\ ヽノ _|||||_____.爪_|―――゚'ヽ > ;;;'''''';;;';';; / <_/
r' ̄\_ 三〉)) ̄ ||||`ー' `-、ゝ ̄ ;;''' ∴。・、
)__/. ̄ ̄ |||| \ '':;:;,,,;;;'''`・゚。;;
0394デフォルトの名無しさん
2006/12/02(土) 02:59:51-― ̄ ̄ ` ―-- _
, ´ , ~  ̄、"ー 、
_/ / ,r _ ヽ ノ
, ´ / / ● i"
,/ ,| / / _i⌒ l| i |
と,-‐ ´ ̄ / / (⊂ ● j'__ |
(´__ 、 / /  ̄!,__,u● | モナドって言っただけで撃つことないじゃん
 ̄ ̄`ヾ_ し u l| i /ヽ、 ちょっと調子にのっただけなのに・・・
,_ \ ノ(`'__ノ
(__  ̄~" __ , --‐一~⊂ ⊃_
 ̄ ̄ ̄ ⊂ ̄ __⊃
⊂_____⊃
0395デフォルトの名無しさん
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 \
0396デフォルトの名無しさん
2006/12/02(土) 03:14:55,..-──- 、
/. : : : : : : : : : \
/.: : : : : : : : : : : : : : ヽ length関数は要素の数を返す!
,!::: : : :,-…-…-ミ: : : : :', 関数の右にあるのが引数だ
{:: : : : :i '⌒' '⌒' i: : : : :} どんな値でも長さを調べられるぜ
{:: : : : | ェェ ェェ | : : : : :} さぁ答えろ! 間違えたら殺す!!
{ : : : :| ,.、 .| :: : : :;!
_∧ ヾ: :: :i r‐-ニ-┐ | : : :ノ ∧
( \ ゞイ! ヽ 二゙ノ イゞ‐ ′ //~⌒ヽ
|( ● )| i\ _,,ノ| ` ー一'´//\ /i |( ● )|
\_ノ ^i | _,,..r''''" ノ | \`', / / / ̄`''ー | i^ ゝ_ノ
|_|,-''iつl/´ ヽノ| /\ / 、│ l⊂i''-,|_|
[__|_|/〉ヽ、 / |/ );;;;/\/ 'く /〈\|_|__]
[ニニ〉 ', ヽ. | /⌒| / ゚/ / 〈二二]
└―' '─┘
0397デフォルトの名無しさん
2006/12/02(土) 03:18:17∩─ー、
/ ● 、_ `ヽ
/ ( ● ● |つ
| /(入__ノ ミ 上から・・・
、 (_/ ノ
\___ノ゙ 7
/ 丶' ⌒ヽ::: 7
/ ヽ / /::: 0
/ /へ ヘ/ /::: 1
/ \ ヾミ /|::: 1
(__/| \___ノ/:::
/ /:::
/ y ):::
/ / /:::
/ /::::
/ /:::::
( く::::::::
|\ ヽ:::::
| .|\ \ :::::
\ .| .i::: \ ⌒i::
\ | /:::: ヽ 〈::
\ | i:::::: (__ノ:
__ノ ):::::
(_,,/\
0398デフォルトの名無しさん
2006/12/02(土) 03:18:55ちげーーよ!!
.,..-──- 、
r '´. : : : : : : : : : :ヽ
/.: : : : : : : : : : : : : :: ヽ
,!::: : : : : ,-…-…-ミ:: : :',.. _
{:: : : : : :i ,;ノ;´:`ゞ、i: : :.:} / / _____
{:: : : : : :| ェェ;;;;;;;ェェ|: : : } ./ / /// \\ ./\ ∩___∩
{ : : : : ::| ,.、 .| : : :;!./ \  ̄  ̄/./ | ノ --‐' 、_\
ヾ: :: : :i r‐-ニ┐| : r / /"\.> .__/./ / ,_;:;:ノ、 ● |
ゞイ! ヽ 二゙ノ イ /__/ <__/ | ( _●_) ミ
/⌒ `ー―''´ヽ \_ ~\彡、 |∪| ミ
/ | // \_/ ヽノ  ̄\
( く"| _____|____,,___ /  ̄Z、 /,,,,,,,, /ヽ >
\ ヽノ _|||||_____.爪_|―――゚'ヽ > ;;;'''''';;;';';; / <_/
r' ̄\_ 三〉)) ̄ ||||`ー' `-、ゝ ̄ ;;''' ∴。・、
)__/. ̄ ̄ |||| \ '':;:;,,,;;;'''`・゚。;;
0399デフォルトの名無しさん
2006/12/02(土) 03:26:35/.: : : : : : : : : : : : : : ヽ
そんなバカなクマ ,!::: : : :,-…-…-ミ: : : : :',
{:: : : : :i'⌒' '⌒' i: : : : :}
∩___∩ {:: : : : | ェェ ェェ |: : : : :}
| ノ --‐' 、_\: : : :| ,.、 |:: : : :;!
/ ,_;:;:;ノ、 ●ヾ: :: :i r‐-ニ-┐ | : : :ノ 上の3つは
| ( _●_) ミゞイ! ヽ二゙ノ イゞ‐′ リスト(配列)だから正解!!
彡、 |∪| ミ ⌒゛ /⌒ヽ\
/⌒ ヽノ`''/ ⌒ ー--、' ,/`/
/ /~〔_彡.ミ⌒ヽー,==-、 ヽ_,zn' /
| | / `^,/  ̄,ノ ヽ、__^ノ /
彡ノ | /⌒ヽ i⌒ ー 、 ヽ
ヽ l人 | .) ` . |ー┐
\ `⌒ | ノヽ、_ ノ.ヽ」
/. : : : : : : : : : \
/.: : : : : : : : : : : : : : ヽ
,!::: : : :,-…-…-ミ: : : : :',
{:: : : : :i '⌒' '⌒' i: : : : :}
{:: : : : | ェェ ェェ |: : : : :} でも下の2つは
{ : : : :| ,.、 |:: : : :;! ただの文字列!
ヾ: :: :i r‐-ニ-┐| : : :ノ
,,,! ヽ二゙ノ イゞ‐′ こういう場合は文字数を
ひっかけクマ・・・ /  ̄⌒ヽ 数えるんだろーがぁぁ!!
| lヽ、 | __
∩___∩ L__| |_. `ヽ
| ノ --‐' 、_\ lヽ‐'〉 .|
/ ,_;:;:;ノ、 ●ヾ _ \/ .|
| ( _●_) ミ ー-`\ \,,ノギリギリ
彡、 |∪| ミ. `ヽ )
彡 ヽノ/ ,// /
0400デフォルトの名無しさん
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 | |_,,..::‐''´
0401デフォルトの名無しさん
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::::::::::::::::::/ /:::::::::::/:::::(ヽ--─ / | /
ヽ_=--"⌒ ゙゙̄ヾ:/ /:::::::/:::::::::`<==-- ノ / /
/ / \/::::::::::::::::::::::::::::: ̄'''"":://
/ / :::: ヾ::::::::::::::::::::::::::::べ__;;;--"
0402デフォルトの名無しさん
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──┐ |
(__/ > ). | |_
/ / (___)
( \
\__)
0403デフォルトの名無しさん
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──┐ |
(__/ > ). | |_
/ / (___)
( \
\__)
0404デフォルトの名無しさん
2006/12/02(土) 03:48:22バカ専用 普通 ハッカー ウィザード
┝ - - - - ┿━━━┿━━━┥
∩___∩ /)
| ノ ヽ ( i )))
/ ● ● | / /
| ( _●_) |ノ / まだここら辺クマーー!!
彡、 |∪| ,/
/ ヽノ /
0405デフォルトの名無しさん
2006/12/02(土) 13:34:53length [""]
は、空文字列をひとつ含む配列なんだから
1
だよ。
0406デフォルトの名無しさん
2006/12/02(土) 13:59:22// | | ,イ
// l | //
// ∩___∩ / ||ノノ_/ /
/'" | ノ ヽ / /
/ ,/./ ● ● | / ;/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,. ‐'" |:| ( _●_) ミ / ,< 間違えてんじゃねーかよ!!
, ィ'" |:::彡 |∪| / , ' \___________
,.イ |:::::::L ヽノ,,,,ノ .//´ ̄ ̄`ヽ \
//i| ,.|::::::レ! /:::::/ // \ ( ̄`ヽ、 \
./:::::{ |ヽ |ヽ∠.|::::::| メ:::::::; '_/// /`''"⌒i ,.....,_ \、 `ヽ、\
`''" `'''`ー-|'" ,':::::::|':::::::; ' / / ヾ-┤ |'´,. --.、`丶、\ `\
ノ {::::::/:::::::/__ノ ∠/ / _ /- イ、_ ヽ ヽ
/ ノ/⌒ヽ::::} / /: : : : : : : : : : : (' ,ノ,ハ ガッ
< {ム/ }/ ∠/ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ | ヽ
`ヽ、 'ー'-'‐'′ / {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::} !`'ー─ゝ、 _
ヽ / l: :ノ /二―-、 |: ::ノ / _ `丶..ノF'!
ヽ-‐''" ̄``ヽ | //  ̄7/ /::ノ ̄ヽ ̄ `i丶、__,.ノ
ヾ(_二─-┘{/ ヽ、_ }ヽ、
 ̄ ̄ ``'"ー-
0407デフォルトの名無しさん
2006/12/02(土) 21:51:400408デフォルトの名無しさん
2006/12/02(土) 22:57:35_ /- イ、_ |_|_|_|_
バカ野郎! /: : : : : : : : : : : ( / 〉〉〉〉 カスが!
l⌒)OOo /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ { ⊂〉
∩___∩ { ) ) {:: : : :ノ --‐' 、_\: : ::} | | ∩___∩
| ノ ヽ | ::::::/ {:: : :ノ ,_;:;:;ノ ////ヾ: :::} l l / ヽ |
/ ● ● | / ::::| 、 l: :ノ /二―-、 |: ::ノ ヽ | ● ● ヽ
| ( _●_) ミ/ ) ,,・_ | //  ̄7/ /::ノ .・,,; \彡 (_●_ ) |
彡、 |∪| / / ̄, ’,∴ ・ ¨ 〉(_二─-┘{/ ∴ ;・, ; \ |∪| ミ
/ __ ヽノ / / 、・∵ ’ /、//|  ̄ ̄ヽ 、;:,・ ヽ. ヽノ___ ヽ
(___) / / / // |//\ 〉 ヽ (_____)
0409デフォルトの名無しさん
2006/12/02(土) 22:58:52うるせーばか!
__ /- イ、_
∩___∩ / 〉〉〉〉 /: : : : : : : : : : : (
/_ノ `ー- ゝ\ 、 { ⊂〉/: : : : ::;:;: ;: ;:;: ; : : : ::ゝ〈〈〈〈 ヽ ∩___∩
| ● ゝ:;;;:;:_, ヽ , ,・_ | {:: : : :ノ --‐' 、_\: : ::}〈⊃ } | ノ --‐' 、_\
彡 (_●_ ) '' |, ’ ,∴ l {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::} | | 、 / ,_;;;:;ノ、 ● |
彡、 |∪| ミ、・∵ ’ ヽ l: :ノ /二―-、 |: ::ノ ! ,,・_ | ( _●_) ミ
γ ̄ ヽノ ヽ) \ | //  ̄7/ /::ノ / , ’,∴ ・¨彡、 |∪| ミ
〈 /i i \ 〉(_二─-┘{/ / 、・∵ ’ / ヽノ ̄ヽ
ノ ノ ヽ 、//|  ̄ /´ / /\ 〉
0410デフォルトの名無しさん
2006/12/02(土) 23:07:38【問題】
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^-┐
| |~ ~ ~ ~ ~ ~ ~ ~ ~ │
| | 配列は要素数 │
| / | 文字列は文字数|
| / | 正直すまんクマ |
∪ |_____________|
\_)
0411デフォルトの名無しさん
2006/12/03(日) 01:33:32つ | 文字列 = 文字のリスト │
. | "kuma" .→ ['k', 'u', 'm', 'a'] |
. | "ヌケドナルド" → ['ヌ', 'ケ', 'ド', 'ナ', 'ル', 'ド'] .|
. └────────────────────┘
つ [] == ""
0412デフォルトの名無しさん
2006/12/03(日) 02:50:45[] :: [Char] だな
0413デフォルトの名無しさん
2006/12/03(日) 19:26:12mapMを使ってるせいだろうか。
main = do cs <- getContents
r <- mapM hoge $ lines cs
putStr $ head r
hoge :: String -> IO String
hoge x = return x
0414デフォルトの名無しさん
2006/12/03(日) 21:26:50その通り。
csの終端を見つけるまでmapM_が終わらないから、
putStrが実行されることもない。
0415414
2006/12/03(日) 21:27:230416413
2006/12/03(日) 23:45:53なるほど。ありがとう。
一行入力するごとに結果を返してほしいのだが、いい方法はないのかな。
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
こうすれば望みの結果が得られるようなのだが、ちょっとめんどくさすぎるな・・・(・∀・;)
0417デフォルトの名無しさん
2006/12/04(月) 00:29:46IOは上から順に実行されるのが原則(getContentsは例外)で、
評価と違って「値の要求があって初めて」実行したりはしない。
だから
r <- mapM hoge $ lines cs
とあったら、rが必要とされるか否かにかかわらずmapMは最後まで実行される。
これは、そうでないと動作の順序を予測するのが難しくなって不便だからだ。
どうしてもその挙動が必要なら、unsafeInterleaveIOという関数を使えば実現できる。
ちなみにそのコードは行ごとにputStrしているだけで、
mapM_ putStrLn $ lines cs
と書いているのとかわらない。
何がしたいかをもう少し詳しく教えてくれたら、もうちょっとまともな助言ができると思う。
0418413
2006/12/04(月) 01:51:46>評価と違って「値の要求があって初めて」実行したりはしない。
>だから
>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
0419デフォルトの名無しさん
2006/12/04(月) 03:03:58それと同じことをするだけなら、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として記述するとか。
ただし、標準のリストと違って操作関数が用意されていないので面倒ではある。
0420413
2006/12/04(月) 14:08:07そうか、なるほど、mapM_の中で完結させれば良かったのか・・・。
mapMの返り値を受け取って処理しないといけない、って思いこんでた。
なんて頭が固いんだ、俺はorz
ジェネレータを使って云々かんぬんってのはまだ理解できないので、もっと勉強してみるよ。
ほんとにありがと!
0421デフォルトの名無しさん
2006/12/06(水) 11:29:31getContentsは例外なのね・・・。GHCのソースを見たらunsafeInterleaveIOを使ってたよ。
0422デフォルトの名無しさん
2006/12/10(日) 17:55:530423デフォルトの名無しさん
2006/12/10(日) 18:16:270424デフォルトの名無しさん
2006/12/10(日) 18:36:060425デフォルトの名無しさん
2006/12/10(日) 18:42:03仕切ってくれるの?
ちょっと期待
0426デフォルトの名無しさん
2006/12/10(日) 19:18:52この間友達に訊かれて、Haskell使いでないけど興味持った。
0427デフォルトの名無しさん
2006/12/10(日) 20:28:190428デフォルトの名無しさん
2006/12/10(日) 21:32:190429デフォルトの名無しさん
2006/12/11(月) 00:00:510430デフォルトの名無しさん
2006/12/11(月) 00:12:220431デフォルトの名無しさん
2006/12/11(月) 00:21:23今からここが本スレになります
0432デフォルトの名無しさん
2006/12/11(月) 15:01:430433デフォルトの名無しさん
2006/12/11(月) 18:34:26ここ見てUnboxed typeを使ってみようとしたんだが、Top-level bindings for unlifted types aren't allowed と出てコンパイルできん。
まあ、使い方を全然理解してないせいだと思うのだが(top-level bindingsとかunliftの意味もわからんし)、どこか解説ページないかな。
つか、あのページの説明だけでみんなは理解できるのだろうか(・∀・;)
0434デフォルトの名無しさん
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
0435デフォルトの名無しさん
2006/12/11(月) 19:02:43>Primitive types are always unlifted; that is, a value of a primitive type cannot be bottom.
0436433
2006/12/11(月) 21:43:56詳しい説明をありがとう。
>>top-level bindings
>モジュールレベルの束縛のこと。
さんくす!さっきのエラーは出なくなった!
今度は#がはずせないという問題にぶち当たったけど、こっちはI#の存在に気づいて解決した。
>というか本スレに書けyo
あっちは圏論の話題が中心だから、初歩的なことは書きづらくて・・・。
>>435
>見てみたら>>433のリンク先にlifted typeの説明あるじゃん。
すまん。読んでたけどそっちも全く意味わからんかった。
0437デフォルトの名無しさん
2006/12/11(月) 22:57:29>すまん。読んでたけどそっちも全く意味わからんかった。
ボトムっていうのは、停止しない/エラーになる計算の結果を表す概念上の値のこと。
(この辺厳密じゃないかも。間違ってたら分かってる人が突っ込んでくれることを期待)
例えば
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
0438デフォルトの名無しさん
2006/12/11(月) 23:39:100439デフォルトの名無しさん
2006/12/11(月) 23:44:58本スレはプログラムの話題、
理論的な話は情報学板、のほうがいいんじゃないだろうか。
0440デフォルトの名無しさん
2006/12/12(火) 15:37:04hoge :: m a -> a
みたいな.
0441デフォルトの名無しさん
2006/12/12(火) 15:53:12個々のモナドごとにある。
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を束縛すれば良いので。
0442デフォルトの名無しさん
2006/12/12(火) 20:07:25>>=関数を使ってください
0443デフォルトの名無しさん
2006/12/12(火) 21:50:170444デフォルトの名無しさん
2006/12/12(火) 22:35:08それによって参照透明性を保ってるんじゃないの?
詳しい人教えて!
0445デフォルトの名無しさん
2006/12/13(水) 16:00:420446デフォルトの名無しさん
2006/12/13(水) 18:03:200447デフォルトの名無しさん
2006/12/13(水) 22:40:42ひょっとして、haskellはツンデレ美少女なんではなかろうか。
haskell「ごめんね素直じゃなくて」
俺「いや、しょうがないって」
haskell「・・・。お兄ちゃん、IOモナドの仕組みが知りたい、って言ってたよね」
俺「ん? まーな」
haskell「でも、そのためには私の中身を見ないとだめだよね・・・」
俺「い、いや、無理しなくていいよ」
haskell「・・・。見てもいいよ」
俺「え?」
haskell「見てもいいよ! お兄ちゃんだったらいいよ!」
0448デフォルトの名無しさん
2006/12/13(水) 23:12:100449デフォルトの名無しさん
2006/12/14(木) 02:44:08( ・∀・) <呼んだ?
0450デフォルトの名無しさん
2006/12/14(木) 12:04:410451デフォルトの名無しさん
2006/12/14(木) 17:34:55データ構造書くのはIOを入れずにやれという暗黙のメッセージだと思う
プログラムのしくみ本体とIOの部分を分けるということ
その方が実際動作が速いみたいだし
0452デフォルトの名無しさん
2006/12/14(木) 21:30:350453デフォルトの名無しさん
2006/12/14(木) 21:49:490454デフォルトの名無しさん
2006/12/19(火) 20:27:210455デフォルトの名無しさん
2006/12/19(火) 23:32:220456デフォルトの名無しさん
2006/12/20(水) 10:19:520457デフォルトの名無しさん
2006/12/20(水) 23:04:25俺が初心者な以上、それは無理ってもんだ
0458デフォルトの名無しさん
2006/12/21(木) 00:06:460459デフォルトの名無しさん
2006/12/21(木) 01:35:34僕は似たような記号を多用するその文体のとっつきにくさに萌えです。
0460デフォルトの名無しさん
2006/12/21(木) 01:42:020461デフォルトの名無しさん
2006/12/21(木) 03:06:45haskellたんを知ってから仕事に全く集中できなくなってしまったよ・・・
0462デフォルトの名無しさん
2007/01/03(水) 06:46:57「ふつうのHaskellプログラミング」からなんですが、
length [""] -> 1
length [] -> 0
の""というのは文字が一文字も無い文字列を表しているのでしょうか?
もう一つ。
a
b
c
みたいに一行ずつ保存されているファイルは、エディタからはそうみえるだけで
実際には"a\nb\nc\c"みたいに保存されているのでしょうか?
そうじゃないとlines関数でリストに出来ないですもんね?
0463デフォルトの名無しさん
2007/01/03(水) 17:38:31その通り。
>実際には"a\nb\nc\c"みたいに保存されているのでしょうか?
その通り。
0464デフォルトの名無しさん
2007/01/04(木) 16:06:05回答有り難うございます!
0465デフォルトの名無しさん
2007/01/10(水) 07:23:21どう書くのがベターでしょうか?
# Rubyですが
def hoge(ary)
ary.each_index do |i|
j = rand(i+1)
ary[i], ary[j] = ary[j], ary[i]
end
end
0466デフォルトの名無しさん
2007/01/11(木) 23:09:05こんな感じになった。やたらと面倒だったので改善案募集。
{-# 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)
0467466
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
0468デフォルトの名無しさん
2007/01/13(土) 17:10:31>>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
0469468
2007/01/13(土) 21:04:49import 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
0470デフォルトの名無しさん
2007/01/13(土) 23:20:57なんかくやしい。
0471デフォルトの名無しさん
2007/02/14(水) 00:17:050472380
2007/02/14(水) 23:30:00【第一部】 AAでHaskellのお勉強(超初心者用)
>>380-410
【第二部】 AAで圏論のお勉強(入門編)
Coming soon!
0473デフォルトの名無しさん
2007/02/15(木) 00:00:34,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;;
{;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;;
ヾ;;;ハ ノ .::!lリ;;r゙ 圏論は難しい・・・
`Z;i 〈.,_..,. ノ;;;;;;;;>
,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f そんなふうに考えていた時期が
~''戈ヽ `二´ r'´:::. `! 俺にもありました
0474デフォルトの名無しさん
2007/02/15(木) 00:01:18/ .\
\ / \ /
\ ___________ . /
\ ./ \ /
| \/ \/...|
| | | |
| | | |
.._ |_| |_|_..
| | さあ‥ 逝こうか‥‥ | |
| | | |
| | | |
| | | |
| |/ ..\| |
| | | |
.._|/| _ _ _ _ _ _ _ _ ...|\|_
/ ..| | _−_−_−_−_− _ | | \
| |/_/━ ━ ━ ━ ━ ━\_\| |
.._| /_/━ ━ ━ ━ ━ ━ ━ \_\.|_
/_/━ ━ ━ ━ ━ ━ ━ \_\
/ /━ ━ ━ ━ ━ ━ ━\ \
0475デフォルトの名無しさん
2007/02/15(木) 22:54:57∩___∩
| ノ ヽ
/ ● ● | たった一つの命を捨てて
|◎) ̄  ̄|| ̄ ̄ ) ミ 生まれ変わった不死身の体
彡、___||_/`\ 鉄の圏論を叩いて砕く
/ __ /´> ) クマーンがやらねば誰がやる
(___) / (_/
| /
| /\ \
| / ) )
∪ ( \
\_)
0476デフォルトの名無しさん
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
0477デフォルトの名無しさん
2007/02/25(日) 01:59:18∩___∩
|ノ⌒ ⌒ ヽ
/ ●) ●) |
Let's | ( _●_) ミ Haskell♪
彡、 |∪| 、`
/ ヽノ ヽ
/ 人 \\ 彡
⊂´_/ ) ヽ__`⊃
/ 人 (
(_ノ (_)
0478デフォルトの名無しさん
2007/02/25(日) 02:00:25A B
∩___∩ /)
| ノ ヽ ( i )))
/ ● ● | / /
| ( _●_) |ノ /
彡、 |∪| ,/
/ ヽノ /´ ここにオブジェクトAとオブジェクトBがあるクマ
0479デフォルトの名無しさん
2007/02/25(日) 02:02:12A → B
∩___∩
| ノ ヽ
/ > < | じつはAさんはBさんを好きなんだクマ
| //// ( _●_) ミ
彡、 l⌒l ノ
/ __ \ \ヽ
. (___) \__)
0480デフォルトの名無しさん
2007/02/25(日) 02:07:27∩___∩
| ノ ヽ
/ ● ● | と、いうように
| ( _●_) ミ ある対象とある対象がなんらかの関係をもっていることを
彡、 |∪| 、`\ 圏論では「射」と言うクマ
/ __ ヽノ /´> )
(___) / (_/
| /
| /\ \
| / ) )
∪ ( \
\_)
0481デフォルトの名無しさん
2007/02/25(日) 02:09:55∩___∩
| ノ ヽ A → B
/ ● ● |
| ( _●_) ミ この場合、Aさんを「ドメイン」、Bさんを「コドメイン」と言うクマ
彡、 |∪| 、`\
0482デフォルトの名無しさん
2007/02/25(日) 02:15:49∩___∩
| ノ _, ,_ ヽ
/ ● ● | 別にBさんを好きじゃなくてもいいんだクマ
| ( _●_) ミ Bさんを嫌いでもいいし
彡、 |∪| ノ BさんはAさんの嫁でもいいし
⊂⌒ヽ / ヽノ ヽ /⌒つ AさんがBさんをレイ-プする、という関係でもなんでもいいクマ
\ ヽ / ヽ /
\_,,ノ |、_ノ
0483デフォルトの名無しさん
2007/02/25(日) 02:19:20∩___∩
| ノ ヽ
/ ● ● | A → B
| ( _●_) ミ ココ!!
彡、 |∪| 、`\
/ __ ヽノ /´> ) この図では「→」がAさんとBさんの関係を表してるクマ
(___) / (_/ 関係というものには方向性が付き物なんだクマ
| /
| /\ \ この「関係を表した矢印」こそが「射」クマー!
| / ) )
∪ ( \
\_)
0484デフォルトの名無しさん
2007/02/25(日) 02:20:050485デフォルトの名無しさん
2007/02/25(日) 02:21:35まだまだ続クマ?
\  ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ (´´
\(⌒-⌒) o (´⌒(´
(・(ェ,,)・ )つ⌒`つ≡≡≡(´⌒;;;≡≡≡
 ̄ ̄ (´⌒(´⌒;;
ズザーーーーーッ
0486デフォルトの名無しさん
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──┐ |
(__/ > ). | |_
/ / (___)
( \
\__)
0487デフォルトの名無しさん
2007/02/25(日) 02:56:02、 l _,
ヽ/⌒ヘ~
., 't,_,ノ丶 ∩、 ∩
/ ! '` | '──-' '\
,/ ● 'i,
/ ( _●_) ● i,
彡 しノ ミ あたまをやわらか〜くするクマ〜
|`:、\ 'ii __,/
'i、 ̄~~ ij 乙__ノi
^-ァ __,ノ
r^~"i' 'l
!、 ! l
~^''!, ,_ ,!_
\ l,~^''‐--::,,⊃ ) ) ) )
`'‐’
0488デフォルトの名無しさん
2007/02/25(日) 03:02:26X Y Z
∩___∩ /)
| ノ ヽ ( i )))
/ ● ● | / /
| ( _●_) |ノ /
彡、 |∪| ,/
/ ヽノ /´ ここにオブジェクトXとオブジェクトYとオブジェクトZがあるクマ
0489デフォルトの名無しさん
2007/02/25(日) 03:06:57∩____∩
/ ヽ X → Y YさんはXさんのいとこクマ
/ ● ● | Y → Z ZさんとYさんのいとこクマ
| ( _●_ ) ミ
彡、,, |∪| /
/__ ヽノ l\
(___u) (uニ ).
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0490デフォルトの名無しさん
2007/02/25(日) 03:09:49|:::::::::::::::::::::::::::::::
|" ̄ ゙゙̄`∩::::::::::::::::
|,ノ ヽ, ヽ::::::::::::::::::::::::: X → Y
|● ● i'゙ ゙゙゙̄`''、::::::::::::::::
| (_●_) ミノ ヽ ヾつ:::::::::: ↓
| ヽノ ノ● ● i::::::::::
{ヽ,__ )´(_●_) `,ミ::::::: Z
| ヽ / ヽノ ,ノ::::::
あれ?XさんとZさんは・・・いとこ?
0491デフォルトの名無しさん
2007/02/25(日) 03:17:59∩─ー、
/ ● 、_ `ヽ
/ ( ● ● |つ
| /(入__ノ ミ 所詮、XとZが
、 (_/ ノ いとこだろーと、はとこだろーと
\___ノ゙ 関係ないのさ・・・
/ 丶' ⌒ヽ:::
/ ヽ / /::: ただひとつ言えることは
/ /へ ヘ/ /::: XからZへのなんらかの関係があるかもしれない
/ \ ヾミ /|::: ってことだ
(__/| \___ノ/:::
/ /::: これを圏論では射の「合成」と呼ぶ
/ y ):::
/ / /:::
/ /:::: X → Y
/ /:::::
( く:::::::: ↓
|\ ヽ:::::
| .|\ \ ::::: Z
\ .| .i::: \ ⌒i::
\ | /:::: ヽ 〈:: [XからZへの矢印が考えられる]
\ | i:::::: (__ノ:
__ノ ):::::
(_,,/\
0492デフォルトの名無しさん
2007/02/25(日) 03:19:52|
|.-──-、
| : : : : : : : : \
|: : : : : : : : : : : ヽ
|-…-…-ミ: : : : :',
| '⌒' '⌒' i: : : : :}
| ェェ ェェ |: : : : :}
| ,.、 |:: : : :;! どこで出ていこうかな・・・・・
| r‐-ニ-┐| : : :ノ
|! ヽ 二゙ノ イゞ‐′
| ` ー一'´丿 \
| \___/ /`丶、
| /~ト、 / l \
0493デフォルトの名無しさん
2007/02/25(日) 03:50:43,..-──- 、
/. : : : : : : : : : \
関数Xは /.: : : : : : : : : : : : : : ヽ
クラスYを引数にする ,!::: : : :,-…-…-ミ: : : : :',
X(Y) {:: : : : :i \ / i: : : : :}
ちなみにYは {:: : : : | ェェ ェェ |: : : : :} 合成のほかの例え!!
Zという属性を. , 、 . { : : : :| ,.、 .. |:: : : :;!
持っている ヽ ヽ. _ .ヾ: :: :i r‐-ニ-┐ .| : : :ノ
} >'´.-!、ゞイ! ヽ二゙ノ イゞ‐′
| −! \` ー一'´丿 \
ノ ,二!\ \___/ /`丶、
/\ / \ /~ト、 / l \
/ 、 `ソ! \/l::::|ハ/ l-7 _ヽ
0494デフォルトの名無しさん
2007/02/25(日) 03:52:45_ /- イ、_
__ /: : : : : : : : : : : (
〈〈〈〈 ヽ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
〈⊃ } {:: : : :ノ --‐' 、_\: : ::}
∩___∩ | | {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
| ノ ヽ ! ! 、 l: :ノ /二―-、 |: ::ノ
/ ● ● | / ,,・_ | //  ̄7/ /::ノ
| ( _●_) ミ/ , ’,∴ ・ ¨ 〉(_二─-┘{/
彡、 |∪| / 、・∵ ’ /、//|  ̄ ̄ヽ
/ __ ヽノ / / // |//\ 〉
(___) / / // /\ /
わかりづらいクマ
0495デフォルトの名無しさん
2007/02/25(日) 04:10:53_ /- イ、_
/: : : : : : : : : : : (
/: : : : ::;:;: ;: ;:;: ; : : : ::ゝ; 関数X → クラスY
.{:: : : :ノ --‐' 、_\: : ::}
.{:: : :ノ ,_;:;:;ノ、 ェェ ヾ: ↓
.l: :ノ /二―-、 |: ::ノ..
| //  ̄7/ /::ノ 属性Z
. 〉(_二─-┘{/
/、//|  ̄ ̄ヽ
わかんないかなコレ・・・
0496デフォルトの名無しさん
2007/02/25(日) 04:14:39class X {
method( Y ) {}
}
class Y {
Z z;
}
class Z {}
0497デフォルトの名無しさん
2007/02/25(日) 04:38:27\ i /
─── ・ ── ← ヌッケ
 ̄ 二─ _ // | \
 ̄ 、 - 、 / / |
-、\ \ / /
\\ \
/ \ヾ ヽ ヽ
/ \ ヾ、 | i
クマソッ // |! `i |
/// | |
/ ( | |
<_,へ 丶-、 | |
__●_ rm \ \ |! リ |
/ ヽ-'⊇) ̄`ヾ │ / | |
⊂/ ● /\_,.-、 / / / /
│ /\ / _/ / / //
⊂丿 ミ (⌒)  ̄ / / /
\__ミ / / //_ /
\_/ _二─
0498デフォルトの名無しさん
2007/02/25(日) 04:39:35A → 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 ● '")
くまー
0499デフォルトの名無しさん
2007/02/25(日) 04:43:17i⌒i⌒i
| ヽ
/ 人__ヽ∩
/ / ヽ >>498のように人間は人間同士いろんな関係をもってるクマ
/ / ● ● | 物事だってそうだクマ
( | ( _●_) ミ コレとかアレのいろんな関係で成り立っているクマ
\ 彡、 |∪| (
\ ヽノ `ー´⌒\
\ /\ \、
\ / (  ̄)
\ | ( ̄ ̄ ̄ ̄)
\ ヽ/ / ̄ ̄
\__/
0500デフォルトの名無しさん
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′ / /
0501デフォルトの名無しさん
2007/02/25(日) 05:06:35圏(カテゴリー)
┏━━━━━━━━━━━━━━━━━━━━━┓
┃クマー クマー クマー ┃
┃~~~~~~ ~~~~~~ ~~~~~~ ┃
┃ ↑[神] ↑[神] ↑[神] ┃
┃ [好き] [好き] . ┃
┃ A君 → Bちゃん → . C君 ┃
┃ ~~~~ ~~~~~~~~ ~~~~~ . . ┃
┃ ↑[好き] ↓[爆破] ┃
┃ . . [保有] ┃
┃ . . D君 → フェラーリ ┃
┃ ~~~~ ~~~~~~~~~~ ┃
┃ ↓[ペット] . .┃
┃ [同類] . .┃
┃ヌッケ ← 犬 .┃
┃~~~~~~ ~~~ . ┃
┗━━━━━━━━━━━━━━━━━━━━━┛
0502デフォルトの名無しさん
2007/02/25(日) 05:16:08【まとめ】
┏━┓ 射 ┏━┓
┃.A.┃ → ┃.B.┃
┗━┛ ┗━┛
対象 対象
(ドメイン) (コドメイン)
上の図が基本要素
これが複数あつまり関係しあったものを圏という
0503デフォルトの名無しさん
2007/02/25(日) 05:20:23ふぅ、つかれたクマー
∩___∩
| ノ ヽ ( )
/ ● ● | ( )
__| ( _●_) ミ__ ( )
(_. 彡、 |∪| 、`__ )─┛
/ / ヽ ヽノ /_/:::::/
|::::::::::| / ( ̄ ̄ ̄ヽ |:::::::| ̄
|::::::::::| |  ̄ ̄ヽ .ノ |:::::::| /
/ ̄ ̄旦 ̄ ̄ ̄ ̄ ̄ ̄ ̄/|/
/__________/ | |
| |-------------------| |
0504デフォルトの名無しさん
2007/02/25(日) 09:49:350505デフォルトの名無しさん
2007/02/25(日) 12:04:290506デフォルトの名無しさん
2007/02/26(月) 08:23:38それがちょっと違う。
たとえば
A → B → C という2つの射があったときに
ここでA → Cという上の2つの射の*合成*が定義されてなかったら圏にならない。
すべてのコドメインとドメインが一致する射の組について合成が定義される
場合について、その全体を圏と呼ぶことが出来る。
↑のAAもがんばってくれw
0507デフォルトの名無しさん
2007/02/26(月) 19:20:210508デフォルトの名無しさん
2007/02/26(月) 23:59:49あー、なるほどね。そういう条件が必要だったのか。
Wikipediaのこの文章をみてちょっと理解しきれなかったんだな。
>圏 C についてその射(と射の合成可能性)だけでも全部わかっていれば、
>そのうちで恒等射になっているものが対象を示しているので著者によっては
>上の公理を満たす射の集まりを持って圏と定義することもある。
恒等射ってのがなんなのかわからん。ググっても出てこないし!
>>507
クマーとかを本に使って金もらうと炎上しそうだなw
0509デフォルトの名無しさん
2007/02/27(火) 02:24:050510デフォルトの名無しさん
2007/02/27(火) 03:06:50恒等射っていうのはドメインとコドメインが等しくて、
何回合成してもそれ自身と等しくなるような射。
圏のすべての対象について、一個ずつ恒等射があること
が必要。逆に言うと、恒等射があるとそれに対応する
対象がちょうどひとつあるので、恒等射と対象は
1対1に対応している。(したがって、人によっては、恒等射を
対象そのものとみなすって言うのが↑の記事、、
0511デフォルトの名無しさん
2007/02/27(火) 03:15:03冪等射と恒等射は別じゃないか?
0512デフォルトの名無しさん
2007/02/27(火) 04:11:06だから、上の条件にプラスして、他の任意の合成可能な射
と合成して相手を変化させないという条件も必要。
ちゃんと書くと、
1:A→Aという射で他の任意の射
f:A→Bと合成して、f1=f
g:C→Aと合成して、1g=g
となるようなもの、・・・
0513デフォルトの名無しさん
2007/03/18(日) 18:43:550514デフォルトの名無しさん
2007/03/18(日) 18:46:410515デフォルトの名無しさん
2007/03/18(日) 18:47:120516デフォルトの名無しさん
2007/03/18(日) 18:47:46次スレが立つまでの避難所ということで
0517デフォルトの名無しさん
2007/03/18(日) 18:54:270518デフォルトの名無しさん
2007/03/18(日) 19:01:05立てた。
0519デフォルトの名無しさん
2007/03/18(日) 19:07:59乙!
0520デフォルトの名無しさん
2007/03/25(日) 15:03:44簡単に実行時例外が発生するじゃん。なんだよこれ。
コンパイルが通れば論理的な誤り以外、
ほとんどバグが取れてるのかと思ったのに。
実行時に読み込むデータとかの誤りなら仕方ないにしても、
そんなのない静的にすべて決まってるプログラムでも
実行時例外が起きえるなんて、全然だめじゃんwww
0521デフォルトの名無しさん
2007/03/25(日) 19:04:34ボトムのことかな?
0522デフォルトの名無しさん
2007/03/25(日) 21:12:50例外を起こす可能性のある関数を使わなきゃいいんじゃない?
あるいは、もっと型の強い言語を使ったらどうよ。
0523デフォルトの名無しさん
2007/03/25(日) 21:53:28関数毎の定義域に合ったサブタイプを作るとか、
なんとかならんのかね。
もっと型の強い言語ってどんなの?
0524デフォルトの名無しさん
2007/03/26(月) 01:54:120525デフォルトの名無しさん
2007/03/26(月) 10:33:010526デフォルトの名無しさん
2007/03/26(月) 10:43:070527デフォルトの名無しさん
2007/03/26(月) 16:44:200528デフォルトの名無しさん
2007/03/26(月) 17:44:470529デフォルトの名無しさん
2007/03/26(月) 23:35:130530デフォルトの名無しさん
2007/03/27(火) 20:05:02俺が出会ったランタイムエラーは
パターンマッチの場合分けの漏ればかりだった。
型がらみで実行時エラーってでる可能性はあるの?
0531デフォルトの名無しさん
2007/03/27(火) 20:40:55>もっと型の強い言語ってどんなの?
依存型のある言語とかじゃないか?実用化されてるのか知らんけど。
>>530
head []とかdiv 1 0とか。
0532デフォルトの名無しさん
2007/03/27(火) 20:45:020533デフォルトの名無しさん
2007/03/27(火) 21:19:17とすると類に普通の型が混ざるわけ?
0534530
2007/03/27(火) 21:26:28div 1 0は型エラーじゃないじゃん。
head []も型システムの責任なのかい?
そうか
型に値域を限定する機能があればいいのか?
div :: (Num a) (Num b:ただし0を除く) => a -> b -> a
head :: [a] ただし[]を除く
みたいな。
でもどうやっても静的にはチェックできそうにない orz
0535デフォルトの名無しさん
2007/03/27(火) 21:59:15data 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) -> {- ...型が書けねえ -}
0536保守
2007/05/26(土) 18:36:560537デフォルトの名無しさん
2007/05/27(日) 20:43:180538デフォルトの名無しさん
2007/05/27(日) 23:19:22って言ってるアンタも勝ち負けを意識してるんだから、負けてるよ。
0539デフォルトの名無しさん
2007/05/27(日) 23:32:170540デフォルトの名無しさん
2007/05/30(水) 21:02:250541デフォルトの名無しさん
2007/05/31(木) 00:08:210542デフォルトの名無しさん
2007/05/31(木) 02:59:580543デフォルトの名無しさん
2007/05/31(木) 03:24:300544デフォルトの名無しさん
2007/05/31(木) 03:25:270545デフォルトの名無しさん
2007/08/22(水) 21:16:38言語の設計の根っこがCPUの挙動にぜんぜん当てはめられていないからか、
俺には宇宙語だよこりゃ…。
0546デフォルトの名無しさん
2007/08/22(水) 21:36:33C言語もCPUの挙動に当てはめられるかというとそうでもない
そもそもソフトウェア設計用だからな
0547偉そうに語ってみる
2007/08/23(木) 01:19:28後半、モナドやWikiエンジンの開発のところは急に難易度が上がっているので、
それより前の部分を何度も読んで動かしていると感じがつかめてくると思います。
あとは、メモリとかスタックとか、効率のことを考えるのをひとまずやめて
プログラムでどういうことをやりたいかを考えてみるのはどうでしょうか。
0548デフォルトの名無しさん
2007/08/23(木) 02:46:560549デフォルトの名無しさん
2007/08/24(金) 01:14:220550デフォルトの名無しさん
2007/08/24(金) 09:02:270551デフォルトの名無しさん
2007/08/27(月) 13:01:13龍角散は「ゴホン!」だろ
エヘン虫にはヴィックスドロップ。
0552デフォルトの名無しさん
2007/08/28(火) 09:39:440553デフォルトの名無しさん
2007/09/15(土) 23:11:490554デフォルトの名無しさん
2007/09/15(土) 23:12:360555デフォルトの名無しさん
2007/10/08(月) 21:16:410556デフォルトの名無しさん
2007/10/20(土) 02:30:140557デフォルトの名無しさん
2007/11/14(水) 16:25:03頭の中に同型対応になるものがたくさんあるってことだから
少なくともアホじゃないだろう
0558デフォルトの名無しさん
2007/11/14(水) 22:27:08あの手の輩は「これは非直感的だからウンコ」て台詞の方が圧倒的に多いよ
0559デフォルトの名無しさん
2007/11/19(月) 00:28:42スレタイでスルーしてて後悔した
0560デフォルトの名無しさん
2007/11/20(火) 21:30:080562デフォルトの名無しさん
2007/12/11(火) 07:32:070563デフォルトの名無しさん
2007/12/23(日) 03:41:420564デフォルトの名無しさん
2007/12/23(日) 11:22:420565デフォルトの名無しさん
2007/12/23(日) 13:33:300566デフォルトの名無しさん
2007/12/29(土) 12:23:36でも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);
}
0567566
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言語を知らない人の方が先入観がなく理解しやすいとは思えないが。
0568デフォルトの名無しさん
2007/12/29(土) 12:55:10[1,2,3]は配列じゃなくてリスト
配列とリストの違いはググレ
0569デフォルトの名無しさん
2007/12/29(土) 12:57:10それから、細かいが、
>演算子++の優先度が高い
低い、の間違いだよな?
0570デフォルトの名無しさん
2007/12/29(土) 12:58:12「自分が知ってるものと似てる」=メタファ
「見たら使い方がわかる」=アフォーダンス
0571デフォルトの名無しさん
2007/12/29(土) 12:58:27初心者は気にしなくていいよ。
0572デフォルトの名無しさん
2007/12/29(土) 13:00:14だったらお前はmalloc,freeひたすら繰り返してろ
0574デフォルトの名無しさん
2007/12/29(土) 13:03:26どこに+と*が出てきてるんだ?
0575デフォルトの名無しさん
2007/12/29(土) 13:05:15もし(++)の優先度が関数適用より高いなら、
qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
は、
qsort (elts_lt_x ++ [x] ++ qsort) elts_greq_x
と解釈されるはずだよ。
0576566
2007/12/29(土) 13:07:20Haskellとは関係なくて「優先度が高い」という言葉の定義の確認で、
+と*を比較すると*が優先度が高いという言い回しが正しいかどうかです。
>>575
すみません、それ以前のレベルで、
優先度という言葉の定義があやふやでした。
よく考えたら++の優先度が低いという意味が理解できました。
1+2*3で+は後で計算していますがqsortでの++もそれと同じですね。
混乱してしまってごめんなさい。
0577566
2007/12/29(土) 13:14:41ご指摘ありがとうございます。
日本語のHaskell本を2冊とも買ったのでよく勉強します。
>>569
それはそうなんですが、自信たっぷりな>>8の書き方を見て、
普通の知能の人間なら文法も含めて推測できるはず
それができない俺はアホだ。
という劣等感を感じたんです。
色々とつまずきましたが、読み方が分かるようになると、
Haskellのインデントの文法はとても美しいと感じられるようになりました。
今まで好きだったPythonが糞に思えてきました。
0578デフォルトの名無しさん
2007/12/29(土) 13:18:42haskellのインデント(レイアウトのことかな)が美しいと思うのは自由ですが、
ちょっと偉い人の間では嫌っている人もかなりいます
0579566
2007/12/29(土) 13:26:18はい、レイアウトのことです。
もしお手数でなければ参考までに嫌われている理由をお聞きしたいです。
Pythonのインデントだとコピペの際にずれを直すのが鬱陶しいと思いました。
C言語だとずれていても無視できて、後で自動整形できますからね。
0580デフォルトの名無しさん
2007/12/29(土) 14:24:52たとえばcaseの中にcaseがあって、それがレイアウトで書かれていると、
インデントが少しずれただけで全く意味が異なる式になってしまうことがあったりするから。
だからhaskellにはブロックで書くこともできるからレイアウトを使わなくても良い。
でもレイアウトが崩れても一つの解釈しかできないところならレイアウトで書いたほうがきれいかもしれないね。
0581566
2007/12/29(土) 20:28:26なるほど。
レイアウトはExcelで書くのに向いているかもしれないと思いました。
そういえば副作用がない関数型のイメージをワークシートに例えた解説を
どこかで読んだのを思い出しました。
ところでqsort elts_lt_x ++ [x] ++ qsort elts_greq_xの演算子の件ですが、
単純に左から右にパースして優先度は関係ないのではないかと気付きました。
静的に型付けされているため、qsortの引数は1つしかないと決められるからです。
0582デフォルトの名無しさん
2007/12/29(土) 21:35:33ヒント: カリー化
0583デフォルトの名無しさん
2007/12/29(土) 21:38:18いきなりHaskellやったってわからねーだろ。
0584デフォルトの名無しさん
2007/12/29(土) 22:04:56↑大学の教科書になってるHaskell使ったプログラミング自体の入門書だから
いきなりやってもわかるようにできてる
この本だとモナドが最後のほうになるまででてこないから
ふつうのHaskellプログラミングと併読してもいいやも
0585デフォルトの名無しさん
2007/12/29(土) 22:16:31「副作用も何のその。非正格性なんて、速度を犠牲にしてまで要らないよ。
主題はメタランゲージなんだから、関数型言語なんてレッテルを貼らないでおくれ。」
という世界。
0586デフォルトの名無しさん
2007/12/29(土) 23:51:39というか、CAML開発の時点で「妥協の産物」と開発者自らが語っている。
その後継のOCAMLでレッテル貼る貼らないとか以前の問題。
その点、SMLはHaskellと同じで純粋培養した関数型っていう感じがする。
NewJergyとかいいな。
でもあえてGauchを薦めてみるw
Lisp/Scheme Familyは楽しいぞ。古きを尋ねて新きを知るという感じかな。
0587デフォルトの名無しさん
2007/12/30(日) 00:13:17OS開発も一緒に楽しめて一石二鳥
0588デフォルトの名無しさん
2007/12/30(日) 00:24:56×Gauch
○Gauche
0589デフォルトの名無しさん
2007/12/30(日) 00:27:19Reading Gaucheなんてのをやってるな
ttp://wiki.monaos.org/pukiwiki.php?Reading%20Gauche
0590デフォルトの名無しさん
2007/12/30(日) 00:29:240591566
2007/12/30(日) 00:45:12qsortが単独で切り出されて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のレイアウトが美しいと気付いたんです。
0592デフォルトの名無しさん
2007/12/30(日) 00:53:150593デフォルトの名無しさん
2007/12/30(日) 01:02:58C っぽく書くと
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))
0594デフォルトの名無しさん
2007/12/30(日) 01:38:25あなた、一度でもリファレンスに目を通しましたか?
最初から最後まで一読してから、わからないことがあれば質問してください。
0595デフォルトの名無しさん
2007/12/30(日) 01:39:040596566
2007/12/30(日) 01:41:46自分にHaskellは無理のようです。
色々と教えていただいてありがとうございました。
0597デフォルトの名無しさん
2007/12/30(日) 01:48:440598デフォルトの名無しさん
2007/12/30(日) 01:51:300599デフォルトの名無しさん
2007/12/30(日) 01:52:270600デフォルトの名無しさん
2007/12/30(日) 02:05:390601デフォルトの名無しさん
2007/12/30(日) 02:07:200602デフォルトの名無しさん
2007/12/30(日) 02:10:02お前566だろ?
さっそく門前払いを逆恨みか
0603デフォルトの名無しさん
2007/12/30(日) 02:15:32オブジェクト指向化したのがConcurrent Cleanじゃね?
0604デフォルトの名無しさん
2007/12/30(日) 02:24:04Cみたいなeager evaluationとHaskellみたいなLazy evaluationでは違うのだよ。
0605デフォルトの名無しさん
2007/12/30(日) 02:24:39それは勘違い
0606デフォルトの名無しさん
2007/12/30(日) 02:24:46いやOZだ。
0607デフォルトの名無しさん
2007/12/30(日) 02:33:520608デフォルトの名無しさん
2007/12/30(日) 02:52:450609デフォルトの名無しさん
2007/12/30(日) 09:30:400610デフォルトの名無しさん
2007/12/30(日) 10:47:280611デフォルトの名無しさん
2007/12/30(日) 12:03:29原理主義って・・・もともとrubyは学者でもない一プログラマが実用主義の下に作った言語だろ?
rubyの原理主義とはなんだ?
0612デフォルトの名無しさん
2007/12/30(日) 12:04:340613デフォルトの名無しさん
2007/12/30(日) 12:05:090614デフォルトの名無しさん
2007/12/30(日) 12:06:550615デフォルトの名無しさん
2007/12/30(日) 17:00:47>「副作用も何のその。非正格性なんて、速度を犠牲にしてまで要らないよ。
>主題はメタランゲージなんだから、関数型言語なんてレッテルを貼らないでおくれ。」
非正格性=non-Strictness=Lazyness
わざわざ非正格性なんて判りにくい言い方をするのモナーw
0616デフォルトの名無しさん
2007/12/30(日) 17:06:280617デフォルトの名無しさん
2007/12/30(日) 17:15:22怠惰性とか遅延性って表現はなんか違和感が
0618デフォルトの名無しさん
2007/12/30(日) 17:26:530619デフォルトの名無しさん
2007/12/30(日) 17:27:19習い始めのころでもC言語は別に難しくはなかったが、新しいことを学ぶ気持ちだった。
関数型言語で初めて今まで培った勘が役に立った感じがする。
本来のオブジェクトって言ったら抵抗とかコンデンサとかみたいに副作用がないもののはずなんだがなぁ。
なんでオブジェクト指向って言葉が根付いたのが手続き型言語の世界なんだろう。
いや、歴史的経緯は知ってるけど、納得できない。
0620デフォルトの名無しさん
2007/12/30(日) 17:39:19研究者の端くれなら尚更判りやすい表現を心がけるべきかと
0621デフォルトの名無しさん
2007/12/30(日) 17:41:16なんで研究者だと思うんですか?
0622デフォルトの名無しさん
2007/12/30(日) 17:52:21>なんでオブジェクト指向って言葉が根付いたのが手続き型言語の世界なんだろう。
関数型ではファンクターで抽象化できるからオブジェクト化が必要とされることがあまりなかったから。
手続き型では抽象化の方法がオブジェクト化に求められたが、これを関数型にポートする際にオブジェクト指向の関数型が必要とされた。
手続き型で蓄積された資産がすごい勢いでオブジェクト指向の関数型OCAMLにポートされつつあるからM$もF#を出す気になった。
こういった資産のひとつがOCAMLのocsigen。OCAML版Ruby on Railsのパクリ。
他にも、GaucheのKahuaもそれ系。
これらが関数型の世界でどんな進化をするのか興味深い。
0623デフォルトの名無しさん
2007/12/30(日) 17:58:150624デフォルトの名無しさん
2007/12/30(日) 18:01:39Micro$oft=>F#/Visual-???
Unix=>Gauche/Haskell/etc
0625デフォルトの名無しさん
2007/12/30(日) 18:03:43いいえ、
Unixは終焉までずっとC言語です。
0626デフォルトの名無しさん
2007/12/30(日) 18:09:22Cはどのプラットフォームでも使うアセンブラ的なポジションになってると思う。
0627デフォルトの名無しさん
2007/12/30(日) 18:16:40理想主義者=>Squeak/Haskell
現代の化石=>C/Lisp/Fortran/COBOL
0628デフォルトの名無しさん
2007/12/30(日) 18:21:59Fortranは物理の世界では現役バリバリです。
Lisp・・・うーん
0629デフォルトの名無しさん
2007/12/30(日) 18:29:20優秀なやつはシステム課に回されてコボルやらされるらしいですよw
0630デフォルトの名無しさん
2007/12/30(日) 18:30:36Ruby<=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
0631デフォルトの名無しさん
2007/12/30(日) 18:33:050632デフォルトの名無しさん
2007/12/30(日) 18:57:010633デフォルトの名無しさん
2007/12/30(日) 20:19:25では、どのようにプログラムしたのでしょう?
0634デフォルトの名無しさん
2007/12/30(日) 20:34:42まつもとゆきひろ
0635デフォルトの名無しさん
2007/12/30(日) 21:54:110636デフォルトの名無しさん
2007/12/30(日) 23:14:14シェーンフィンケルが考案し、Haskellが開発した。
その仕事が1930年代のチャーチとクリーネによるメタ言語としてのλ算法の業績につながった。
そしてその後1954年にIBMのバッカスが最初の高級言語FORTRANを作る。
こういう歴史の直系だから、言語としてのHaskellが研究志向が強いというのもうなづける。
0637デフォルトの名無しさん
2007/12/30(日) 23:22:300638デフォルトの名無しさん
2007/12/30(日) 23:40:29そもそも、プログラミングパラダイムとしてのオブジェクト指向というのが
「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。
本質的に「状態」を持たない関数型の世界にオブジェクト指向が入り込む余地はそもそも無い。
あと、細かいことだが
>本来のオブジェクトって言ったら抵抗とかコンデンサとかみたいに副作用がないもののはずなんだがなぁ。
コンデンサってのは電荷をためて(状態変化)それを放電する(これも状態変化)ものでないかい?
微分方程式ばかり相手にしてると忘れがちになりかねないけれども、コンデンサは確かに「状態」を持つよ。
抵抗のことはよく分からんが。
>>622
>これらが関数型の世界でどんな進化をするのか興味深い。
「純粋関数型」を標榜するHaskellとはオブジェクトは相容れないし、
OCAMLでもコード中、オブジェクト機能を使ってる部分は、「関数型っぽく」はならないだろ?
オブジェクトが関数型の世界でどうなるか、という興味は無意味だと思うね。
オブジェクトの世界と関数型の世界とがどう棲み分けて共存していくか、ならわかるが。
0639デフォルトの名無しさん
2007/12/30(日) 23:59:13オブジェクト指向と関数型が共存することでこういったことが出来ればいいなぁという要求は出てくると思う。
これまでの言語の発展だってそういうことから出てきてる。
この部分は相容れないけどこれは一緒にするとこんなことが出来るというのが実装上の工夫のポイントだと思う。
君には無意味かもしらんが。
0640デフォルトの名無しさん
2007/12/31(月) 00:35:57data 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
0641デフォルトの名無しさん
2007/12/31(月) 01:48:19>そもそも、プログラミングパラダイムとしてのオブジェクト指向というのが
>「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。
ハァ?www
0642デフォルトの名無しさん
2007/12/31(月) 01:51:09>「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。
どーでもいいがデータ構造とアルゴリズムを纏めるんじゃなかったかな?
状態云々は結果的にそういうプログラミング手法が出てきただけで本質的にはあんまり関係ないと思う。
まあHaskellの代数的データ型は型とデータ構造を対応付けて
型についてアルゴリズムを書くから、データ構造とアルゴリズムはほぼ完全に分離してるといえるかもしれない。
これはこれで結構分かりやすくていいシステムだとい思うんだけど、
たとえば型クラス便利だけどインターフェイスみたいにガンガン作る気にならないっていうか、
そういう細かいあたりがめんどくさくなってる気がする。
そういうのをオブジェクト指向で何とかできないものかとか思ったり。これは俺の浅知恵だけどね。
あと、細かいことだが
>コンデンサってのは電荷をためて(状態変化)それを放電する(これも状態変化)ものでないかい?
それは「副値」的なパラメータが存在するだけで実際にそれを「副作用」として実装するかはプログラマ次第では?
というかHaskellだったら普通にモナドで表現できるもんだと思う。
実世界での対応で考えると、ある力を外力と考えることも出来るし、より大きな系の内力と考えることも出来る程度の違い。
状態が存在するかどうかはどういう切り口で物事を見るかに依存している、と思う。
0643デフォルトの名無しさん
2008/01/04(金) 23:00:40どこが発信源かは知らないがこういうことが普通に受け容れられるようになったんだなぁ。
ゆとり世代が言ってるんだろうか?
0644デフォルトの名無しさん
2008/01/05(土) 00:04:56C言語が関数型言語であるとか、インタプリタはちょっとずつコード生成して実行する
処理系であるとか。
0645デフォルトの名無しさん
2008/01/05(土) 00:23:290646デフォルトの名無しさん
2008/01/05(土) 00:47:14VBの互換性を問題にしてる人は参照透過性とか副次作用とかを気にしてるんだろうか。OCAMLだってあまり考えずに代入とか使えば問題があるのは同じだと思うけど。
むしろOCAMLerがVBを使うときに便利だと思うけどなぁ。
0647デフォルトの名無しさん
2008/01/05(土) 00:49:180648デフォルトの名無しさん
2008/01/05(土) 00:55:06>オブジェクトが関数型の世界でどうなるか、という興味は無意味だと思うね。
>オブジェクトの世界と関数型の世界とがどう棲み分けて共存していくか、ならわかるが。
こういうことを周りに認めさせようとする日本人は多いんだろうなぁ。
0649デフォルトの名無しさん
2008/01/05(土) 15:43:070650デフォルトの名無しさん
2008/01/05(土) 16:00:40世界の先を行ってたと思うんだけどな。
旧帝大-早慶-電電&電機メーカ研究所レベルの研究の浸透拡散がうまく
いかんのはどこかに構造的な問題があるんかね?
0651デフォルトの名無しさん
2008/01/05(土) 16:07:41別にお祭りというほどでもありませんが。
単に研究ネタがなくなったから今主流のオブジェクト指向と組み合わせてみよう、
って思ってるだけじゃないの。
0652デフォルトの名無しさん
2008/01/05(土) 16:11:25> こういうことを周りに認めさせようとする日本人は多いんだろうなぁ。
特定の環境にこり固まって極めちゃった悪い意味での職人型なプログラマとかにありそう。
そういう先輩が職場にいて、適切なフォローを入れる人がいなかったりすると、新人は悲惨だね。
0653デフォルトの名無しさん
2008/01/05(土) 16:23:02SKIコンビネータのことをまとめてるHPを発見したので報告。
ttp://ls-al.jp/blog2/item_343.html
ソースコードはこっち。
http://ls-al.jp/blogarchives/CompileToCombinators.hs
なぜかYコンビネータはないけどY=SLLだからすぐに作れるね。
0654デフォルトの名無しさん
2008/01/05(土) 16:43:45"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
0655デフォルトの名無しさん
2008/01/05(土) 16:44:47×Smalltall
0656デフォルトの名無しさん
2008/01/05(土) 17:12:45「型クラス」と「型構築子クラス」でオブジェクト指向っぽく使えて、副作用がないようにモナドやその一般化のアローが使える。
オブジェクト指向と関数型が共存出来ないと言いながらHaskellを使っている人は分裂気味なんじゃないでしょうかね。
0657デフォルトの名無しさん
2008/01/05(土) 17:23:030658デフォルトの名無しさん
2008/01/05(土) 17:26:07だから『準』と言っている訳だが
0659デフォルトの名無しさん
2008/01/05(土) 17:30:37ばか
0660デフォルトの名無しさん
2008/01/05(土) 17:38:26ご高説を是非御拝聴いたしましょう。
0661デフォルトの名無しさん
2008/01/05(土) 17:44:34関数型とオブジェクトなんざ共存出来ねんだよ。
無意味、無意味。無駄無駄無駄wwwwww
0662デフォルトの名無しさん
2008/01/05(土) 17:47:280663デフォルトの名無しさん
2008/01/05(土) 17:49:370664デフォルトの名無しさん
2008/01/05(土) 17:57:51arrow使いにくい
まるでbrainf*ckみたいに見える
結局は普通に書いたほうがきれいだ
0665デフォルトの名無しさん
2008/01/05(土) 18:13:14ばか
やっぱHaskellerってのは池沼だね。
0666デフォルトの名無しさん
2008/01/05(土) 18:20:23import 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
0667デフォルトの名無しさん
2008/01/05(土) 18:22:21tape0 = (['\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)
0668デフォルトの名無しさん
2008/01/05(土) 18:23:18step :: (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, "")
0669デフォルトの名無しさん
2008/01/05(土) 18:24:49run 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なんてたったこれだけ。
0670デフォルトの名無しさん
2008/01/05(土) 18:35:01お前は日常会話もできなそうだな
0671デフォルトの名無しさん
2008/01/05(土) 18:35:35それをarrowでどうぞ
0672デフォルトの名無しさん
2008/01/05(土) 18:45:58状態を持たないステートレスオブジェクトはそのまま純粋関数型言語に取り込めますよね。
「純粋関数型」を標榜するHaskellは状態がないのではなくモナドに閉じ込めています。
ステートフルオブジェクトの状態も同様にモナドに閉じ込める事で「純粋関数型」を
維持したままオブジェクトを利用できると考えますが何か問題があるのでしょうか?
0673デフォルトの名無しさん
2008/01/05(土) 18:56:27>>664>>671でも書いたがarrowが使いにくいんだよ。brainf*ckみたいだろ。
brainf*ckを書き込んだ池沼にはわからねぇんだろうが
0674デフォルトの名無しさん
2008/01/05(土) 18:59:06うんうん。Monadiusとかそうだよね。
0675デフォルトの名無しさん
2008/01/05(土) 19:14:19で、「普通」の説明はマダァ?
0676デフォルトの名無しさん
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::::::ヽ
0677デフォルトの名無しさん
2008/01/05(土) 20:14:38それは658が一番詳しいから658に聞いてくれ
0678デフォルトの名無しさん
2008/01/05(土) 20:25:090679デフォルトの名無しさん
2008/01/05(土) 20:28:470680デフォルトの名無しさん
2008/01/05(土) 20:34:270681デフォルトの名無しさん
2008/01/05(土) 20:37:07少なくとも>>676はアラシだろw
0682デフォルトの名無しさん
2008/01/05(土) 21:28:20ぐぐれYO!ばか
ttp://d.hatena.ne.jp/r-west/20070720/1184946510
ttp://d.hatena.ne.jp/propella/20070807/p1
0683デフォルトの名無しさん
2008/01/05(土) 22:10:09普通?
社会通念だよ。
0684デフォルトの名無しさん
2008/01/05(土) 22:10:54揚げ足取りなんかやってるから単位も危なくなるんだぞ?
0685デフォルトの名無しさん
2008/01/05(土) 22:25:42せっかくぐぐって終息させてやろうとしてるのに馬鹿だねおまえはw
黙ってれば終わったのに。
晒しage
0686デフォルトの名無しさん
2008/01/05(土) 22:27:36ばか
0687デフォルトの名無しさん
2008/01/05(土) 22:30:06Haskell使いキモスwwwwww
0688デフォルトの名無しさん
2008/01/05(土) 22:34:130689デフォルトの名無しさん
2008/01/05(土) 22:37:080690デフォルトの名無しさん
2008/01/05(土) 22:39:26Haskellはプログラム板の恥だな。
0691デフォルトの名無しさん
2008/01/05(土) 22:43:340692デフォルトの名無しさん
2008/01/05(土) 22:46:010693デフォルトの名無しさん
2008/01/05(土) 22:57:220694デフォルトの名無しさん
2008/01/05(土) 22:59:010695デフォルトの名無しさん
2008/01/05(土) 23:01:320696デフォルトの名無しさん
2008/01/05(土) 23:18:120697デフォルトの名無しさん
2008/01/05(土) 23:20:35「プログラム」=「データ構造」+「アルゴリズム」
ってWirth先生が言ってたぞ。
0698デフォルトの名無しさん
2008/01/05(土) 23:21:56先生のゆーとーり世代
0699デフォルトの名無しさん
2008/01/05(土) 23:21:570700デフォルトの名無しさん
2008/01/05(土) 23:23:220701デフォルトの名無しさん
2008/01/05(土) 23:24:320702デフォルトの名無しさん
2008/01/05(土) 23:25:43むしろ教えろゴルァ!
0703デフォルトの名無しさん
2008/01/05(土) 23:28:270704デフォルトの名無しさん
2008/01/05(土) 23:35:36Introduction to Functional Programming Using Haskell
Richard Bird
こっちには載ってるのか。
0705デフォルトの名無しさん
2008/01/05(土) 23:39:060706デフォルトの名無しさん
2008/01/05(土) 23:40:250707デフォルトの名無しさん
2008/01/05(土) 23:46:49ふ・つ・う wwwww
お頭が弱いとアローがbrainf*ckみたいに見えるらしいけど、可換図式みたいで判りやすいよ。
ハッキリ言って簡単。基礎的な数学力があればだけど。圏論ぐらいは出来ないと無理かな。
0708デフォルトの名無しさん
2008/01/05(土) 23:48:02> ハッキリ言って簡単。基礎的な数学力があればだけど。圏論ぐらいは出来ないと無理かな。
どうやら、arrowでプログラミングしたこともないことがよくわかった。
0709デフォルトの名無しさん
2008/01/05(土) 23:55:34でも翻訳はMirandaについてでモナドとか載ってなさげだねぇ。
0710デフォルトの名無しさん
2008/01/06(日) 00:10:550711デフォルトの名無しさん
2008/01/06(日) 00:16:47はいはい。あーarrowはむずかしいいや。brainf*ckみたいにみえるなあw
0712デフォルトの名無しさん
2008/01/06(日) 00:21:36・ オブジェクト指向と関数型は共存出来ない。
・ 「Haskell」=「Arrow」+「普通」 (ただしArrowはbrainf*ckである)
0713デフォルトの名無しさん
2008/01/06(日) 00:29:02なにそれ?Haskell全否定じゃん。
0714デフォルトの名無しさん
2008/01/06(日) 00:31:520715デフォルトの名無しさん
2008/01/06(日) 00:51:13要するに計算の合成を定義すればいいだけ。
フリーダムすぎて使い方を迷うところはあるけど……圏論の知識とかいるか?
0716デフォルトの名無しさん
2008/01/06(日) 00:59:29いらない。
0717デフォルトの名無しさん
2008/01/06(日) 01:00:540718デフォルトの名無しさん
2008/01/06(日) 01:01:02あれば簡単ってことなんじゃないの?おれ圏論知らないけどさw
0719デフォルトの名無しさん
2008/01/06(日) 01:03:26アローってモナドの一般化したやつじゃん。ほとんど同じだろ。
アローが関数を受け持って、モナドが値を受け持つ箱みたいなイメージ。
違ったっけ?
0720デフォルトの名無しさん
2008/01/06(日) 01:07:59それは極論だろ。SコンビネータとかBコンビネータとかYコンビネータを適用するとき副作用があるのか分からなくてドキドキする。
数学知ってたらこういうことがさらっと出来ていいんだろうなと思う。
0721デフォルトの名無しさん
2008/01/06(日) 01:10:190722デフォルトの名無しさん
2008/01/06(日) 01:13:480723デフォルトの名無しさん
2008/01/06(日) 01:21:500724デフォルトの名無しさん
2008/01/06(日) 01:28:420725デフォルトの名無しさん
2008/01/06(日) 04:40:350726デフォルトの名無しさん
2008/01/06(日) 13:30:28値を受け持つ箱と考えるより、monadic function(a->m b)の形式で計算を纏めていく戦略と考えたほうが
理解しやすいかもしれん。monadic valueそのものをモナドだと思ってしまうとよくわからんなるんじゃない?
0727デフォルトの名無しさん
2008/01/06(日) 15:41:27ならこのスレに来るな。ここはクマーが圏論を説明してくれた偉大なスレだ。
0728デフォルトの名無しさん
2008/01/06(日) 15:44:29数学の知識がなくてもSコンビネータとかBコンビネータとかYコンビネータが
何を意味しているのかだけ知っていればどきどきすることはありません。
0729デフォルトの名無しさん
2008/01/06(日) 15:54:07意味が良くわからない。AAで説明してくれ。たのむわ。
0730デフォルトの名無しさん
2008/01/06(日) 16:07:19/ '''-,,,: : : : : : : :i
/、 /: : : : : : : : i ________
r-、 ,,,,,,,,,,、 /: : : : : : : : : :i /
L_, , 、 \: : : : : : : : :i / 圏論持ち出したら
/●) (●> |: :__,=-、: / < 負けかなと思ってる
l イ '- |:/ tbノノ \ ニート(24・男性)
l ,`-=-'\ `l ι';/ \
ヽトェ-ェェ-:) -r'  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヾ=-' /
0731デフォルトの名無しさん
2008/01/06(日) 16:26:09博士課程のニーとですがなにか
0732デフォルトの名無しさん
2008/01/06(日) 16:39:00しったかかw クマーktkr
0733デフォルトの名無しさん
2008/01/06(日) 17:23:29水を差すようで申し訳ないんだが
ちょっと質問
>>720
にある「(対称)前モノイダル圏」って
よく意味が解らない
対称モノイダル圏の条件を弱めたものらしけど
対称モノイダル圏だとなにか不味い事でもあるのですか
0735デフォルトの名無しさん
2008/01/06(日) 17:38:01ほれ、これがアローだ
→
0736デフォルトの名無しさん
2008/01/06(日) 17:51:02/⌒ヽ⌒ヽ
Y
八 ヽ
( __//. ヽ,, ,)
丶1 八. !/
ζ, 八. j
i 丿 、 j
| 八 |
| ! i 、 |
| i し " i '|
|ノ ( i i|
( '~ヽ ! ‖
│ i ‖
| ! ||
| │ |
| | | |
| | | |
| ! | |
| | ‖
/ ヾ
0737デフォルトの名無しさん
2008/01/06(日) 17:53:240738デフォルトの名無しさん
2008/01/06(日) 17:54:470739デフォルトの名無しさん
2008/01/06(日) 17:57:340740デフォルトの名無しさん
2008/01/06(日) 17:58:380741デフォルトの名無しさん
2008/01/06(日) 17:59:420742デフォルトの名無しさん
2008/01/06(日) 18:00:42新しいネタ探して来い
0743デフォルトの名無しさん
2008/01/06(日) 18:14:58こら!みんなが矢印とかちんぽを無視したからって怒るでないw
0744デフォルトの名無しさん
2008/01/06(日) 18:17:280745デフォルトの名無しさん
2008/01/06(日) 18:19:22↑とアローの説明が出来ないクズが取り乱しております
0746デフォルトの名無しさん
2008/01/06(日) 21:27:48コンビネータ理論を知っていれば十分で数学の知識を前提としないって?おいおい。
支離滅裂だぞ。
0747デフォルトの名無しさん
2008/01/06(日) 21:44:24数学の基礎的な知識はそれほど必要ないだろ。
「それだけ」知ってればいいんだから。
0748デフォルトの名無しさん
2008/01/06(日) 21:55:31基礎の意味が違うでしょ。コンビネータ理論は数学基礎論であって、数学の基礎知識じゃない。
しかも副作用についての知識は、いくつかのコンビネータを知ってるではすまない。
他にも山のようにある関数について、一つ一つ個別に知ってるよりも理屈を知ったほうが当然良い。
0749デフォルトの名無しさん
2008/01/06(日) 23:51:52↑アロー・モナド・コンビネータ理論について行けず、肩を落として帰るプログラマの群れ
0750デフォルトの名無しさん
2008/01/07(月) 00:08:05それよりhere documentを入れてくれ
0751デフォルトの名無しさん
2008/01/07(月) 00:29:30ttp://cvs.haskell.org/Hugs/pages/users_guide/here-documents.html
0752デフォルトの名無しさん
2008/01/07(月) 20:07:34くわしくはこのページが参考になる。
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になるということを狙ってる。たしかにモナドって数学的な基礎知識無しでも使えると確信しましたか?
0753デフォルトの名無しさん
2008/01/07(月) 20:44:580754デフォルトの名無しさん
2008/01/07(月) 22:52:180755デフォルトの名無しさん
2008/01/07(月) 23:07:53乙。>>710あたりが言ってた図を書くって「ペースティング図、スタック図(Santiago graphical notation)、ストリング図で描く・・・」てことか。
おれも>>735みたいなのをアローと思ってたw
0756デフォルトの名無しさん
2008/01/07(月) 23:13:13Monoidal Category = モノイド圏
>>733しかモノイダル圏という日本語は使っていないと思う。普通、モノイド圏と呼ぶ。
0757デフォルトの名無しさん
2008/01/07(月) 23:44:59ところで、圏でのモナドは分かるんですが、
プログラム言語のモナドって何なんですか?
0758デフォルトの名無しさん
2008/01/08(火) 00:30:05http://www.ipsj.or.jp/07editj/promenade/4703.pdf
0759デフォルトの名無しさん
2008/01/08(火) 00:33:47ほい
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が保証するように「組み立て順序が自由」で、長くつながったモナドの鎖のどこを切ってもモナドになるョ。
これがモナドがもたらすモジュール化という効能だよーん。
0760デフォルトの名無しさん
2008/01/08(火) 01:11:34プログラムにはなかなか深い数学が隠れているんですね。
いまふと思ったんですが、物理に出てくる量子化という
概念も、もしかするとモナドに関係あるかも知れません。
モジュラリティが何を意味するのかよく考えてみます。
0761デフォルトの名無しさん
2008/01/08(火) 21:02:22http://blogs.dion.ne.jp/keis/
0762デフォルトの名無しさん
2008/01/08(火) 21:15:53宣伝乙
0763デフォルトの名無しさん
2008/01/08(火) 21:40:15doとletは分かるけど、ifってモナドと関係あったっけ?
0764デフォルトの名無しさん
2008/01/08(火) 23:36:51説明が間違ってるところ大杉。
自分でモナドを作る時、どうするつもりかと思った。
0765デフォルトの名無しさん
2008/01/08(火) 23:45:48do と if を一緒に使う話じゃないかな。有名な「一行で書け」ってやつ。
0766デフォルトの名無しさん
2008/01/09(水) 00:55:16パクったはいいが、意味を理解してなかった、ってところか。
0767デフォルトの名無しさん
2008/01/09(水) 09:22:24どこからパクったのか分かりますか?
0768デフォルトの名無しさん
2008/01/13(日) 07:49:24ここのスレが結構盛り上がっていたな
0769デフォルトの名無しさん
2008/01/13(日) 08:07:15みんな偉いな
0770デフォルトの名無しさん
2008/01/13(日) 10:35:260771デフォルトの名無しさん
2008/01/13(日) 17:53:030772デフォルトの名無しさん
2008/01/18(金) 04:18:250773デフォルトの名無しさん
2008/01/18(金) 09:45:240774デフォルトの名無しさん
2008/01/18(金) 15:35:540775デフォルトの名無しさん
2008/01/18(金) 15:37:06そういってPV稼ぐ魂胆だろ
自演乙
0776デフォルトの名無しさん
2008/01/19(土) 15:18:100777デフォルトの名無しさん
2008/01/19(土) 18:53:04そうやって自分が理解できてないのを誤魔化そうって魂胆だろ。
まずは>>761の間違いを指摘してみろよ。話はそれからだなw
0778デフォルトの名無しさん
2008/01/19(土) 21:02:100779デフォルトの名無しさん
2008/01/20(日) 13:31:520780デフォルトの名無しさん
2008/01/20(日) 13:54:12どうでもいい
0781デフォルトの名無しさん
2008/01/20(日) 18:21:290782デフォルトの名無しさん
2008/01/23(水) 20:01:140783デフォルトの名無しさん
2008/01/23(水) 20:35:140784デフォルトの名無しさん
2008/01/23(水) 20:41:460785デフォルトの名無しさん
2008/01/24(木) 04:24:110786デフォルトの名無しさん
2008/01/24(木) 22:55:28perlよかハエーよ スクリプトに使うなら無問題
組込系にはちょっと シビアなタイミングが求められるとダメポ
0787デフォルトの名無しさん
2008/02/16(土) 05:51:47>組込系にはちょっと シビアなタイミングが求められるとダメポ
組み込みはどんな感じのアセンブリコードが生成されるのか予測しやすいほうがいいと思うんだが、
Haskell使いが慣れてくるとどういうasm吐くか割と簡単に把握できるようになるの?
0788デフォルトの名無しさん
2008/02/16(土) 12:33:33Perlよかはやいとか到底考えられないのだけど、その根拠は?
0789デフォルトの名無しさん
2008/02/16(土) 13:35:05ttp://shootout.alioth.debian.org/sandbox/benchmark.php?test=all&lang=ghc&lang2=perl
だと 14 対 1 で Haskell が速い
0790デフォルトの名無しさん
2008/02/16(土) 13:53:31Perlの方が速いと思うなら、そっちこそ説明が要るだろw
0791デフォルトの名無しさん
2008/02/16(土) 14:00:36インタプリタだとばかり思ってた。
0792デフォルトの名無しさん
2008/02/16(土) 14:10:080793デフォルトの名無しさん
2008/02/16(土) 14:34:52コンパイルしなくてもCGIとして使えるのかな 調べてみるか
0794デフォルトの名無しさん
2008/02/16(土) 14:39:190795デフォルトの名無しさん
2008/02/16(土) 14:44:380796デフォルトの名無しさん
2008/02/16(土) 17:15:57可能だよ
0797デフォルトの名無しさん
2008/02/16(土) 23:00:27やろうと思えば、既存の言語でも出来るわけで。言語的に制約がかかっているか
どうかでしょ。「言語的に制約がかかる」というのは、入門者にとってしかメリット
はないよ。
遅延評価も*ほぼ*使わない。無限計算なんてやらんよ?
こんなんで、なんで既存言語から乗り換えるの?俺が、まだHaskellよくわかっていない
だけ?
0798デフォルトの名無しさん
2008/02/16(土) 23:01:190799デフォルトの名無しさん
2008/02/16(土) 23:07:18つか、結局はunsafeなんとかで参照透明性をくずしてんでしょ?
0800デフォルトの名無しさん
2008/02/16(土) 23:08:040801デフォルトの名無しさん
2008/02/16(土) 23:08:40C++ が参照透明な言語だって知ってた?
0802デフォルトの名無しさん
2008/02/16(土) 23:10:00信じられない。あふぉかw
俺が、無知なら教えてくださいw
0803デフォルトの名無しさん
2008/02/16(土) 23:10:31お前、今日のRuby勉強会に行ったやつだろ?
なぜ関数プログラミングは重要か
http://www.sampou.org/haskell/article/whyfp.html
0804デフォルトの名無しさん
2008/02/16(土) 23:11:05C++は再代入できる、とおれは思ってるがw
0805デフォルトの名無しさん
2008/02/16(土) 23:12:01Rubyはすきだが、そいつじゃない。というか、今日一日ひきこもってたしなw
0806デフォルトの名無しさん
2008/02/16(土) 23:12:04unsafeを使うときは注意が必要である
いつ実行されてもプログラムに矛盾が発生しないことがはっきりしない限り使うべきではない
0807デフォルトの名無しさん
2008/02/16(土) 23:12:290808デフォルトの名無しさん
2008/02/16(土) 23:16:090809デフォルトの名無しさん
2008/02/16(土) 23:16:48まずはこれを読んでみてくれ。
http://d.hatena.ne.jp/w_o/20061008#p1
これが面白いのは、参照透明は程度問題に過ぎないという
視点を得られる所なんだと思っている。
0810デフォルトの名無しさん
2008/02/16(土) 23:18:09Haskellの魅力は、副作用が禁じられていることじゃなくて、
副作用なんていう扱いにくいものに頼らなくても自然にプログラムを書けることだ
遅延評価は大いに使う
「ほぼ使わない」なんて思えるのはHaskellに慣れてないだけだ
例えば、C言語の典型的なfor文の使い方
for(T i = init; cont(i); i = next(i)) use(i);
を、Haskellで自然に書き直すと
mapM_ use $ takeWhile cont $ iterate next init
になるけど、これは無限リストを使っている
0811デフォルトの名無しさん
2008/02/16(土) 23:19:34あなたはネタを理解できない人なんですね
0812デフォルトの名無しさん
2008/02/16(土) 23:23:05MLが不便に思えるぐらいだ。
0813デフォルトの名無しさん
2008/02/16(土) 23:23:13ドッキリとかを真に受けるタイプの人でしょ?
>>809 がネタなんだけどね
0814デフォルトの名無しさん
2008/02/16(土) 23:26:29unsafeなんとかは、本当は参照透明なのに、コンパイラが参照透明だと見なしてくれない式を書くときに使う
そうじゃない使い方もできるけど、それは邪悪な使い方だ
0815デフォルトの名無しさん
2008/02/16(土) 23:28:060816デフォルトの名無しさん
2008/02/16(土) 23:28:41組み込みプログラムもなんのその。
0818デフォルトの名無しさん
2008/02/16(土) 23:47:33オーバーヘッドもあるしメモリも食いまくるから組み込みには全く向かないだろ
0819デフォルトの名無しさん
2008/02/16(土) 23:54:08関係ない。
組み込み=低リソースという時代は終わったんだよ。
それよりも、たとえばロケットや自動車のような用途では安全性が求められる。
0820デフォルトの名無しさん
2008/02/16(土) 23:57:18参照透明でなければ遅延評価は役に立たないよ
0821デフォルトの名無しさん
2008/02/17(日) 00:00:210822デフォルトの名無しさん
2008/02/17(日) 00:02:570823799
2008/02/17(日) 00:06:23なるほど…。
でも、遅延評価も必ず使うわけではないし、
(IOの時など遅延評価されては困る場合もあるわけですよね?)
なんというか、参照透明そのものの優位性がわからない…。
・コンパイラが作りやすい?
・数学的にみて美しい?
…、いずれも一般ユーザには関係ないですよね…。
0824デフォルトの名無しさん
2008/02/17(日) 00:07:340825799
2008/02/17(日) 00:08:33う〜ん…。これは正しいのでしょうか?
あくまでも、Haskellは参照透明であって、
そうでないプログラムは邪悪という事ですよね。
0826デフォルトの名無しさん
2008/02/17(日) 00:11:43参照透明だったら関数の返値をキャッシュできるよ
0829デフォルトの名無しさん
2008/02/17(日) 00:18:15完全にキャッシュできればプログラマはわざわざメモ化とかのテクニックを使ってプログラミングする必要がなくなる。
・・・とは言うものの、GHCでは完全にキャッシュしているわけではない。
0830デフォルトの名無しさん
2008/02/17(日) 00:19:45Cのデバッグで一番骨が折れるのが型によるバグ。
Haskellはコンパイルさえ通れば型に関しては完全に矛盾がない。
0831デフォルトの名無しさん
2008/02/17(日) 00:20:48だから、参照透明性はそんなに重大な特徴じゃないんだって
(利点が無いわけじゃない。コンパイラによる最適化がやりやすい。コードが読みやすい。リファクタリングしやすいetc)
逆に、「参照透明でないこと」(破壊的代入や副作用を認める)にも大して優位性は無いんだ
Haskellにはもっと重要な特徴がたくさんある
動作オブジェクトを利用した入出力とか、代数的データ型+パターン照合とか、型クラスとか、遅延評価とか
0833デフォルトの名無しさん
2008/02/17(日) 00:29:07>参照透明性はそんなに重大な特徴じゃない
そうですよね…。
でも、なんか、かたくなに参照透明性を守ろうとして
余計わかり難くなってる気がするんですよね。
全面的な参照透明性を捨てた方が、
すっきりするのではないでしょうか…?
0835デフォルトの名無しさん
2008/02/17(日) 00:30:17http://itpro.nikkeibp.co.jp/article/COLUMN/20071204/288630/
0836デフォルトの名無しさん
2008/02/17(日) 00:30:34ただ、HaskellがCよりデバッグしにくいのは事実だと思う
gdbに匹敵する使いやすさのデバッガがまだ無いからだが
>>833
>でも、なんか、かたくなに参照透明性を守ろうとして
>余計わかり難くなってる気がするんですよね。
どの辺でそう感じた?
0838799
2008/02/17(日) 00:35:00> printfデバッグの類は普通にできる
そうなんですか?
なんかprintfいれるとバグが再現しないとか多そうですが…。
> どの辺でそう感じた?
IOモナドww
参照透明性を捨てれば
もっとステキな実装がありそうじゃないですか?
0839デフォルトの名無しさん
2008/02/17(日) 00:38:46本末転倒だじょ
0840デフォルトの名無しさん
2008/02/17(日) 00:41:05例え参照透明性を捨ててもIOモナドは使いたい
0842デフォルトの名無しさん
2008/02/17(日) 00:43:33Haskell の1つの目標だったんじゃないのか?
0843デフォルトの名無しさん
2008/02/17(日) 00:50:41副作用を使った入出力よりずっとまともだと思う
それから、遅延評価の言語で素朴に副作用を使うと実行順が制御困難になるけど、
IO動作ならこの問題がない
>>842
だろうな
でも言語のユーザーにとってはそんな目標はどうでも良い
0844デフォルトの名無しさん
2008/02/17(日) 00:51:38それだけだと思うぜ。
0845デフォルトの名無しさん
2008/02/17(日) 01:00:20その議論はおかしい
Haskellの特徴は参照透明性だけじゃない
デフォルトの遅延評価も型クラスもIOモナドも$演算子もOCamlには無い
参照透明性なんてどうでも良いという奴にでも、Haskellを使う理由はいくらでもある
0846デフォルトの名無しさん
2008/02/17(日) 01:09:140848デフォルトの名無しさん
2008/02/17(日) 01:15:010849799
2008/02/17(日) 01:15:23まさに、そう、思うんですよw
そんな言語があれば、
確実にブレイクするのではないでしょうか?
誰か作って!私はもちろん……ムリ!
0850デフォルトの名無しさん
2008/02/17(日) 01:26:25unsafePerformIOってのがある
>>849
単に参照透明性のないHaskellならunsafePerformIOを言語の一部として認めれば良いんだけど、
IOモナドを排除するのは難しいと思う
>>843で書いたけど、普通の言語にあるような副作用による入出力は、遅延評価と相性が悪い
実行順を分かり易く制御するには、結局、IOモナドか、Cleanの一意型か、
それに代わる何か新しいメカニズムが必要になる
0851799
2008/02/17(日) 01:39:54な〜るほど!
ひょっとしてunsafePerformIOを使いまくって
>>814 の言う邪悪なIOライブラリを作れば、
Haskellのままでもいいかもしれませんねw
0852デフォルトの名無しさん
2008/02/17(日) 01:41:59こうしよう、C(ほかの言語でもいい)からHaskellに乗り換えるために十分な
説得力を持つ実務的な例を1つだけあげてくれ。
0853デフォルトの名無しさん
2008/02/17(日) 01:55:300854799
2008/02/17(日) 01:55:42「実務的」というかどうかはしらないけど、
コンパイラ的な処理には向いてるらしい…。
再帰下降構文解析
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)』
0855デフォルトの名無しさん
2008/02/17(日) 02:00:39っていうのはウソっていうのはどっかでみたなw
0856デフォルトの名無しさん
2008/02/17(日) 02:06:37実際、言語処理系には向いてる。
構文解析だけじゃなく、コンパイル過程での構文木の操作とかに
代数的データ型とパターンマッチがぴったりハマってかなり綺麗に書ける
(MLも同様。代数的データ型じゃなくてバリアントという名前だけど)。
言語処理系は、基本的にツリーの変形みたいな
I/Oを伴わない数学的な処理が多いから、という理由づけもできるかな。
0858デフォルトの名無しさん
2008/02/17(日) 02:16:57いいえ
0859デフォルトの名無しさん
2008/02/17(日) 02:23:46GHCの仕様じゃないの
0860デフォルトの名無しさん
2008/02/17(日) 02:27:47FFIはHaskell 98への追補
http://www.cse.unsw.edu.au/~chak/haskell/ffi/
unsafePerformIOも入ってる
0861デフォルトの名無しさん
2008/02/17(日) 02:29:450862デフォルトの名無しさん
2008/02/17(日) 08:36:340863デフォルトの名無しさん
2008/02/17(日) 09:30:280864デフォルトの名無しさん
2008/02/17(日) 11:58:51できるだろ
http://www.haskell.org/ghc/docs/latest/html/libraries/Win32/System-Win32-DebugApi.html#v%3Ac_ReadProcessMemory
0865デフォルトの名無しさん
2008/02/17(日) 12:01:270866デフォルトの名無しさん
2008/02/17(日) 18:47:44Simon Thompson (著)
# ペーパーバック: 528ページ
# 出版社: Addison Wesley; 3Rev Ed版 (2008/9/15)
# 言語 英語, 英語, 英語
# ISBN-10: 0201882957
# ISBN-13: 978-0201882957
# 発売日: 2008/9/15
今度こそ発売?
0867デフォルトの名無しさん
2008/02/18(月) 18:08:340868デフォルトの名無しさん
2008/02/18(月) 18:18:320869デフォルトの名無しさん
2008/02/18(月) 20:15:31データ構造とアルゴリズムをまとめるだけなら、それこそ関数型言語の得意分野だし、
手続き型の世界でも、メッセージメタファって何それ、なgeneric programmingが幅を利かせている。
その分なおさら、状態と手続きをまとめるSmalltalk的なオブジェクト指向が
影響力を増しているように思う。
>>654のAlan Kayの言葉は、実行順序への依存性が下がること
(これはメッセージメタファ、イベント駆動から自然に出てくる)と、
参照透明という意味で状態を全く持たないことを(故意に?)混同している。
0870デフォルトの名無しさん
2008/02/19(火) 02:47:18Haskellはかなりいけそうな感触なんだけどなぁ
0871デフォルトの名無しさん
2008/02/19(火) 10:02:24形式的な表現が同じでも、値が同じことの保証がなくなるから。
0872デフォルトの名無しさん
2008/02/19(火) 10:36:55副作用を入れるなら当然それは覚悟の上じゃないのか
0873デフォルトの名無しさん
2008/02/19(火) 12:45:42副作用を入れてもいいのは、値がユニット型の関数だけにしないと破綻するだろ。
0874デフォルトの名無しさん
2008/03/09(日) 07:06:26main = getArgs >>= putStr . flip id "\n" . foldr (.) id . map (showHex . read)
ttp://haskell.g.hatena.ne.jp/nobsun/20060819/ShowS を少し改変
0875デフォルトの名無しさん
2008/03/09(日) 10:02:11暗号に見えていたのが、何の変哲もないプログラムとして認識できるようになったら卒業だな。
0877デフォルトの名無しさん
2008/03/09(日) 23:43:380878デフォルトの名無しさん
2008/03/13(木) 21:20:39おれはもうだめだ
0879デフォルトの名無しさん
2008/03/13(木) 21:26:04なぜ($"\n")と書かないんだろう
0880デフォルトの名無しさん
2008/03/14(金) 13:47:26"123456789"
スタックマシンみたいだ(w
0881デフォルトの名無しさん
2008/03/18(火) 18:48:31\a -> hoge a 4 ()
flip (flip hoge 4) ()
($ ()) . ($ 4) . hoge
0882デフォルトの名無しさん
2008/03/19(水) 16:27:19ああ、そうやってカリー化できるんだ。目から鱗が落ちたよ。
0883デフォルトの名無しさん
2008/04/12(土) 21:48:42http://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以下だったそうだ。
---
0884デフォルトの名無しさん
2008/04/19(土) 00:45:19この板にいるの?
0885デフォルトの名無しさん
2008/04/19(土) 01:39:260886デフォルトの名無しさん
2008/04/19(土) 01:41:220887デフォルトの名無しさん
2008/04/24(木) 00:13:42このスレに限れば、仕事と直で結びつきにくい言語かもしらんけど
でも仕事でプログラムやる傍ら、趣味や素養のためにHaskell弄ってる奴も珍しくはないんじゃなかろうか
0888デフォルトの名無しさん
2008/05/03(土) 18:08:150889デフォルトの名無しさん
2008/05/25(日) 22:21:03皆さんはAranskをご存知でしょうか?
最近ネット社会において急速に発言力を増しつつある
集団です。
本家:http://homepage3.nifty.com/Aransk/
ミラーサイト:http://www.geocities.jp/aransk88/
日本語Blog:http://aransk.cocolog-nifty.com/whypro/
英語もどきBlog:http://d.hatena.ne.jp/Aransk/ここまでがAransk Officialsです。
(上記以外にも2ちゃんねるのプログラム板にAransk専用スレが
立っていますが、これはAranskとは何のつながりもありません。)
上記の2ちゃんねる、yahoo掲示板に精力的に意見を
書き込むと同時に自らのサイトの更新も頻繁に
行っています。
驚いたことに、あらゆる場所で人気が「ありません。」
その人気の無さをこのBlogで究明してみるつもりです。
ご興味ある方は是非ご参加下さい。
0890デフォルトの名無しさん
2008/05/25(日) 22:30:180891デフォルトの名無しさん
2008/05/25(日) 23:10:13\y -> e で、yからeへの関数
0892デフォルトの名無しさん
2008/06/05(木) 18:49:530893デフォルトの名無しさん
2008/07/21(月) 10:56:30Haskellを狂信的に勧めるやつが現れてスレがめちゃくちゃに。
0894デフォルトの名無しさん
2008/07/21(月) 19:56:00信者と信者っぽく振る舞ってネタにしてる奴と2種類いるようだな。
0895デフォルトの名無しさん
2008/09/12(金) 21:26:020896デフォルトの名無しさん
2008/09/12(金) 21:30:22WEBが一番
ここが一番わかりやすいぞ
http://www.sampou.org/cgi-bin/haskell.cgi
0897デフォルトの名無しさん
2008/09/12(金) 23:45:22マジか。本買おうかずっと迷ってたんだ。サンクス。これでやってみるよ。
LL Futureで見たんだけどHaskellって並列プログラミングの強さはどんなもんでしょう?
ttp://www.nicovideo.jp/watch/sm4505381
089836 ◆K0BqlCB3.k
2008/09/13(土) 00:50:59現在開発中で一部は使用可能
http://hackage.haskell.org/trac/ghc/wiki/DataParallel/WorkPlan
0899デフォルトの名無しさん
2008/09/13(土) 02:18:360900デフォルトの名無しさん
2008/09/17(水) 01:21:22本の方がわかりやすいと思うがWebの方を読んで理解できるレベルなら
それでいいと思う。お金かかんないし。
0901デフォルトの名無しさん
2008/12/28(日) 21:41:49その程度に敷居も得られる知識も低い
0902デフォルトの名無しさん
2008/12/29(月) 09:26:47論文書きたいなら書籍より論文読めよ
0903デフォルトの名無しさん
2008/12/29(月) 20:15:130904デフォルトの名無しさん
2008/12/30(火) 16:55:180905デフォルトの名無しさん
2008/12/31(水) 16:52:160906デフォルトの名無しさん
2008/12/31(水) 17:14:30このスレには昔からいただろww( ^ω^)
0907デフォルトの名無しさん
2009/01/13(火) 19:07:140908デフォルトの名無しさん
2009/01/13(火) 20:42:090909デフォルトの名無しさん
2009/01/14(水) 08:32:02落ちてるね
新スレが立ってる
関数型プログラミング言語Haskell Part10
http://pc11.2ch.net/test/read.cgi/tech/1231861873/
0910デフォルトの名無しさん
2009/01/14(水) 19:51:14d
0911デフォルトの名無しさん
2009/01/19(月) 17:45:510912デフォルトの名無しさん
2009/05/13(水) 22:34:580913a36 ◆K0BqlCB3.k
2009/05/31(日) 11:07:440914デフォルトの名無しさん
2009/06/01(月) 21:12:400915デフォルトの名無しさん
2009/08/21(金) 00:34:140916デフォルトの名無しさん
2009/09/07(月) 21:15:420917デフォルトの名無しさん
2009/09/07(月) 23:42:420918デフォルトの名無しさん
2009/09/08(火) 09:17:200919デフォルトの名無しさん
2009/09/08(火) 13:00:270920デフォルトの名無しさん
2009/09/08(火) 14:16:20http://pc12.2ch.net/test/read.cgi/tech/1252382593/l50
0921デフォルトの名無しさん
2009/09/15(火) 19:33:300922デフォルトの名無しさん
2009/09/22(火) 10:10:160923デフォルトの名無しさん
2009/10/16(金) 17:15:210924デフォルトの名無しさん
2009/10/16(金) 17:36:580925デフォルトの名無しさん
2009/11/12(木) 02:51:130926デフォルトの名無しさん
2009/12/06(日) 22:24:520927デフォルトの名無しさん
2009/12/07(月) 14:08:08ここ?
http://www.google.co.uk/
0928デフォルトの名無しさん
2009/12/07(月) 14:19:22じゃないかな
日本語版で「ウェブ全体から」を選ぶより英語版の方が
英語のリソースが優先して表示される。
0929デフォルトの名無しさん
2009/12/17(木) 14:08:16大枚叩いてRWH買ったわ
電気代払えなくなった
0930デフォルトの名無しさん
2009/12/27(日) 22:24:06感想ヨロシク
0931デフォルトの名無しさん
2010/01/10(日) 22:31:50だけどもう一回挑戦する
0932デフォルトの名無しさん
2010/01/11(月) 01:40:31だけども、一回挑戦する
0933デフォルトの名無しさん
2010/01/11(月) 10:38:12>>932
頑張れ
0934デフォルトの名無しさん
2010/01/11(月) 23:01:470935デフォルトの名無しさん
2010/01/13(水) 01:08:390936デフォルトの名無しさん
2010/01/13(水) 01:10:370937デフォルトの名無しさん
2010/01/16(土) 19:45:110938デフォルトの名無しさん
2010/01/24(日) 05:46:040939デフォルトの名無しさん
2010/01/26(火) 21:28:16俺はガチガチに静的チェックされた完璧なクソを作りたいのではなかったのだ。
0940デフォルトの名無しさん
2010/01/27(水) 09:51:100941デフォルトの名無しさん
2010/01/29(金) 23:01:090942デフォルトの名無しさん
2010/01/29(金) 23:33:58ラムダ計算を理解しないとHaskellはできないので、JavaからHaskellまでの間に非常に大きなポテンシャル障壁がある。
遅延評価のせいでサンクが肥大化するので、アルゴリズムが悪くメモリが小さいと、Haskellをやる前にオーバーフローするだろう
0943デフォルトの名無しさん
2010/01/30(土) 19:10:01それともわざとJavaに話をすりかえたの?それも狂ってるね
0944デフォルトの名無しさん
2010/01/30(土) 19:21:47ただの事実だ
0945デフォルトの名無しさん
2010/01/30(土) 20:01:34いつまでたってもデカいシステムつくれないんじゃ
0946デフォルトの名無しさん
2010/01/30(土) 21:59:46デカいシステムを作るのが目的ではないし、
ラムダ計算を知らなくても使えないことはない
しかし知っているに越したことはない
0947デフォルトの名無しさん
2010/01/30(土) 22:05:58それにデカいシステムを簡潔に書けるのが関数型言語の強みだ。
0948デフォルトの名無しさん
2010/01/30(土) 22:44:410949デフォルトの名無しさん
2010/01/30(土) 22:49:45お前はAPLも使ったことないだろ?
0950デフォルトの名無しさん
2010/01/30(土) 23:06:520951デフォルトの名無しさん
2010/01/30(土) 23:11:500952デフォルトの名無しさん
2010/01/31(日) 07:49:58λカリキュラスはどうでもいいからな。
0953デフォルトの名無しさん
2010/01/31(日) 10:07:58肉を炒めます
千切りのキャベツを加えて半生程度にサラッと炒めます
ご飯に乗せてしょうゆかける
0954デフォルトの名無しさん
2010/01/31(日) 19:54:450955デフォルトの名無しさん
2010/02/05(金) 19:51:360956デフォルトの名無しさん
2010/02/07(日) 01:20:57危険だ。
0957デフォルトの名無しさん
2010/02/07(日) 04:09:170958デフォルトの名無しさん
2010/03/04(木) 12:25:400959デフォルトの名無しさん
2010/03/13(土) 02:41:540960デフォルトの名無しさん
2010/03/13(土) 14:12:16「副作用はありません」
てズルイと思います
0961デフォルトの名無しさん
2010/03/13(土) 14:53:350962デフォルトの名無しさん
2010/03/13(土) 14:53:400963デフォルトの名無しさん
2010/08/06(金) 01:47:240964デフォルトの名無しさん
2010/08/17(火) 17:28:000965デフォルトの名無しさん
2010/08/25(水) 20:31:420966デフォルトの名無しさん
2010/08/25(水) 22:58:480967デフォルトの名無しさん
2010/08/26(木) 08:01:000968デフォルトの名無しさん
2010/08/27(金) 00:51:430969デフォルトの名無しさん
2010/09/22(水) 00:10:52詐欺にかかったりしてない?大丈夫?
0970デフォルトの名無しさん
2010/09/26(日) 09:36:450971デフォルトの名無しさん
2010/09/26(日) 09:58:51この結果は[3,4,3,4]
何が起こった!!何故殺した!って言いたい
0972デフォルトの名無しさん
2010/09/26(日) 10:19:130973デフォルトの名無しさん
2010/09/27(月) 06:48:25こういう置き換え、あんまり得意じゃないから、
やってみた。
0974デフォルトの名無しさん
2010/09/27(月) 07:19:21こっちか。
[1,2] >>= (\_ -> [3,4]) >>= \a -> return a
0975デフォルトの名無しさん
2010/09/27(月) 08:49:35仕様通りに解釈すると
[1,2] >> (let ok x = case x of {a -> return a; _ -> fail "...";}in [3,4] >>= ok)
_はパターンマッチでかぶってる言われるので省略すると
[1,2] >> (let ok x = return x in [3,4] >>= ok)
ラムダにしてみると(ここ、少し自信ない)
[1,2] >> [3,4] >>= (\x -> return x)
右の式をη変換
[1,2] >> [3,4] >>= return
モナドの性質より
[1,2] >> ([3,4] >>= return)
モナドの性質より
[1,2] >> [3,4]
0976デフォルトの名無しさん
2010/09/27(月) 21:10:52出力が不親切で入力がハードコードだけど…
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
expr = [| do
[1,2]
a <- [3,4]
return a
|]
main = runQ (undo expr) >>= putStrLn . pprint
undo :: ExpQ -> ExpQ
undo expq = do
DoE stmts <- runQ expq
toExpQ stmts
toExpQ :: [Stmt] -> ExpQ
toExpQ [NoBindS expr] = return expr
toExpQ (BindS pat expr : xs) = do
sym <- newName "x"
infixE (Just (return expr)) (varE (mkName "GHC.Base.>>="))
(Just (lamE [varP sym]
(caseE (varE sym)
[ match (return pat) (normalB (toExpQ xs)) []
, match wildP (normalB (appE (varE (mkName "GHC.Base.fail")) (litE (stringL "...")))) []])))
toExpQ (LetS decls : xs) = letE (map return decls) (toExpQ xs)
toExpQ (NoBindS expr : xs) = [| $(return expr) >> $(toExpQ xs) |]
0977デフォルトの名無しさん
2010/10/02(土) 11:06:190978デフォルトの名無しさん
2010/10/03(日) 23:21:520979デフォルトの名無しさん
2010/10/11(月) 13:56:48ここに載ってる例をHaskellで動かしたいが簡約(step関数)で詰まった
こーど
ttp://codepad.org/fAZ6d19B
思ったより大分苦戦、暇な人がいたら手伝ってください
0980デフォルトの名無しさん
2010/10/11(月) 19:08:53http://codepad.org/mp5y0cH5
5分もかかっちゃった
0981デフォルトの名無しさん
2010/10/11(月) 19:33:54参考にさせて頂きます
自分でも何とか、でけたわ
ttp://codepad.org/0qmcBVeF
レス数が950を超えています。1000を超えると書き込みができなくなります。