5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【数学者】Haskellはクソ言語【オナニー】

1 :デフォルトの名無しさん:2005/09/30(金) 01:34:05
C/C++>>>>(越えられない壁)>>>Haskell

2 :デフォルトの名無しさん:2005/09/30(金) 01:36:14
2

3 :デフォルトの名無しさん:2005/09/30(金) 01:42:53
そもそもC/C++とHaskellを同列に比較しようという時点で>>1は池沼。

4 :デフォルトの名無しさん:2005/09/30(金) 01:46:03
親が4様かっこいいとか言ってる(泣き

5 :デフォルトの名無しさん:2005/09/30(金) 04:40:27
すげー直感的に意味不明。

qsort [] = []
qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
  where
   elts_lt_x = [y | y <- xs, y < x]
   elts_greq_x = [y | y <- xs, y >= x]



6 :デフォルトの名無しさん:2005/09/30(金) 07:48:30
単位もらえずに逆恨みかい?プゲラ

7 :デフォルトの名無しさん:2005/09/30(金) 09:32:51
名スレ

8 :デフォルトの名無しさん:2005/09/30(金) 10:08:59
>>5
それが直観的に理解できないということは素養が足りない。かなりやばい。
日本語にすると理解できたりする?

qsort [] = []
qsort (x:xs) = qsort x未満の要素 ++ [x] ++ qsort x以上の要素
  ここで
   x未満の要素 = [y | y <- xs, y < x]
   x以上の要素 = [y | y <- xs, y >= x]

クイックソート自体を知らない奴でもこれで理解できるだろうというくらい
わかりやすいと思うが。


9 :デフォルトの名無しさん:2005/09/30(金) 10:49:15
C/C++で実装されているperl6は近年最強のベイパーウェアと化していたが、
Haskellで実装されたperl6は既に動いている。
よってHaskell>>>超えられない壁>>>C/C++

10 :デフォルトの名無しさん:2005/09/30(金) 14:34:49
アホの言う「直感的」=「自分の知ってるものに似ている」


11 :デフォルトの名無しさん:2005/09/30(金) 17:17:55
>>10
同意

12 :デフォルトの名無しさん:2005/09/30(金) 17:48:56
>>9
じゃなんでゲームプログラマーはHaskell使わずにC/C++使うの?

13 :デフォルトの名無しさん:2005/09/30(金) 18:36:47
なんで突然「ゲームプログラマー」がでてくるんだろう。

14 :デフォルトの名無しさん:2005/09/30(金) 18:41:36
ゲーム→ウェブブラウザ上で動くゲーム→CGI == Perl
                              ~~~

15 :デフォルトの名無しさん:2005/09/30(金) 20:12:54
ウェブブラウザ上で動くゲームといえば
爆裂ブロック崩し→Java
脱出系ゲーム→Flash == ActionScript
じゃないのか

っていうか、俺、Javaってほぼそのためだけにインストールしているような希ガス(w

16 :デフォルトの名無しさん:2005/10/01(土) 08:51:00
haskellってどんな用途で使われているの?
銀行業務とかの大量バッチとかでは使わないよね。

17 :デフォルトの名無しさん:2005/10/01(土) 14:04:02
>>16
素因数分解とか...
なんか数学者がアルゴリズムを思いついてパッと評価したいときに
使われるような言語というイメージを持っているんだけど..

18 :デフォルトの名無しさん:2005/10/01(土) 21:45:06
>>17
スレタイ通り、数学者に特化しか言語ってことですか。

おれみたいなデジドカに縁は無さそうだ。。。
(勉強すれば世界は広がるだろうがね)

19 :18:2005/10/01(土) 21:45:55
>>18
特化しか、だってw
特化した、ね。

20 :デフォルトの名無しさん:2005/10/01(土) 22:48:33
まぁこういうスレたてる奴はC/C++自体まともにつかえるのかね?
すこし疑問だ。
まともプログラム組めないのに中途半端に手を出してる気がする。

21 :デフォルトの名無しさん:2005/10/01(土) 23:42:48
haskellは美しい言語だと思うが
それを"Cで実装すると予想される遅さ"程度に遅い

22 :デフォルトの名無しさん:2005/10/02(日) 00:01:51
>>20
デジドカにとって最もすばらしいのはどんなに変に書いてもバグがでず、なおかつ理由は良く解らないが難しいという事で単価の上がる言語の事

・・・COBOLか

23 :デフォルトの名無しさん:2005/10/03(月) 12:54:36
>>12
C/C++と比較して遅い、メモリ食いすぎだからゲームには不向きなんだろうな。
そしてなによりプログラマの絶対数が少ないのがネック。
一方でPagsの例しかり、言語処理系の実装には最強?

>>20
むしろ1はHaskellerで、この優れたマイナー言語に目をひくように
あえて煽るようなスレを立てたような希ガス


24 :デフォルトの名無しさん:2005/10/03(月) 15:37:26
最近Haskellを学び始めたC++プログラマの俺に言わせると、
Haskellはとかく宣伝でモナドが強調されるのがネガティブキャンペーンに
なってるとしか思えん。
C++のテンプレートライブラリで入り組んでくるとconstやら参照やらが
足引っ張るのとかxxx_typeをtypedefするお約束やらがあったりとか
templateでmetaprogrammingやっちゃったりとかよりはマシな厄介さ
だと思う。
そういうC++のアドホックな仕組みの積み重ねよりはHaskellの論理的に
まとまったものの方がちゃんと相手をするには楽だし、
コンストラクタの例外安全とかC++のとかく落とし穴の多さを考えると
ずっと楽と言えるかも知れん。



25 :デフォルトの名無しさん:2005/10/03(月) 16:48:20
>>5
[y | y <- xs, y < x]

これは、数学で言うところの

{ y | y ∈ xs で y < x }

という集合のこと。ただし集合でなくてリスト(重複OK, 順序あり)。

26 :デフォルトの名無しさん:2005/10/03(月) 16:49:52
>>24
> xxx_typeをtypedefするお約束やらがあったりとか

お約束というかtypetraitsのcheck実行機構としてtypedefを使っている。

27 :デフォルトの名無しさん:2005/10/04(火) 01:15:43
C/C++>>>>(越えられない壁)>>>Haskell>>>>(越えられない壁)>>> >>1

28 :1:2005/10/12(水) 09:46:26
>>25
ごめんなさい。これで大体わかりました
なるほど、確かにわかりやすいかもしれません

[x | x^2 + x + 2, x > 20]

とかかけちゃうわけですか、こりゃすごいかも...

29 :デフォルトの名無しさん:2005/10/13(木) 05:50:13
かけないお

30 :デフォルトの名無しさん:2005/10/17(月) 16:38:41
>1それ以前に初耳

31 :デフォルトの名無しさん:2005/10/22(土) 10:51:01
こういうスレが伸びるようになればHaskellも市民権を得たと言えるだろうな

32 :デフォルトの名無しさん:2005/10/23(日) 01:06:31
ぐぐって頭のほうに出てくるやつで十分?
よく知らんからお勧めのリンクあったらはってくれ

33 :デフォルトの名無しさん:2005/10/23(日) 12:05:41
Z = [1..]
[x^2 + x + 2 | x <- Z, x > 20]
配列のSWAPとか素晴らしい性能を持ってるお ^ ^



34 :デフォルトの名無しさん:2005/10/23(日) 17:03:07
妖怪図鑑 其の百三十六

         _,,..i'"':,     妖怪 箱ティッシュ
         |\`、: i'、
            \ \`_',..-i   オナニーして逝きそうになると
           \|_,. -┘    ティッシュが手元に無い。
  タタタッ    _ノ )  ノ    それは妖怪箱ティッシュの仕業です。
        ノ ///
       _//  | (_      弱点は水に濡れると死ぬこと。


35 :デフォルトの名無しさん:2005/10/24(月) 09:48:53
>>33
[x^2 + x + 2 | x <- [21..]]




36 :デフォルトの名無しさん:2005/10/24(月) 21:48:49
>>33
N=[1..]
[x^2 + x + 2| x<-N, x>20]


37 :デフォルトの名無しさん:2005/10/25(火) 23:29:02
言語処理系にしか使えない言語・゚・(ノД`)・゚・。

>>24
Haskellでもfundepsでメタプログラミングができるよ。
もちろん画面を埋めつくすエラーメッセージ付きだ。

38 :デフォルトの名無しさん:2005/10/25(火) 23:31:33
Haskellは10年後の言語です

39 :デフォルトの名無しさん:2005/10/27(木) 22:04:55
10年後も10年後なんだよな。

40 :デフォルトの名無しさん:2005/11/03(木) 14:47:55
>>5 間違ってるよ
[x] と [x 以上の要素] を連結してるから

ソート後のリストに x が2つ入っちゃう


41 :デフォルトの名無しさん:2005/11/03(木) 15:05:38
>>40
間違ってないよ xとxsに分離されてるから
x以上になってないと[1,3,1,4]をqsortしたとき要素が減ってしまう

42 :デフォルトの名無しさん:2005/11/03(木) 15:33:15
そうだった
スマソ

43 :デフォルトの名無しさん:2005/11/16(水) 21:50:57
>>37
リアルタイムゲームも書ける
ttp://www.geocities.jp/takascience/windows/monadius.html

44 :デフォルトの名無しさん:2005/11/19(土) 12:28:18
  _   ∩
( ゚∀゚)彡 ハスケル! ハスケル!
 ⊂彡
http://www.haskel.com/


45 :デフォルトの名無しさん:2005/11/22(火) 00:44:19
手続きコード無闇に繋いでも今は無駄だよ
大抵の処理は 高階関数一つで終わりさ
関数型のIOを守るためお前は考え 便利さ見失った
手続き忘れた インターフェース<かお>など見たくはないさ
IO 取り戻せ


46 :デフォルトの名無しさん:2005/11/22(火) 07:51:08
僕はようやくスレをageた。やれやれ。

47 :デフォルトの名無しさん:2005/11/22(火) 07:55:05
本スレが余りに学術的で居心地が悪くなった
Haskellネタ師の溜り場はここですか?

48 :デフォルトの名無しさん:2005/11/22(火) 23:22:30
しかし、数学者からみたら他の言語よりはマシだが、まだまだ不満はあるよな。

49 :デフォルトの名無しさん:2005/11/23(水) 00:56:10
理論的な見地でもまだまだ。処理系の実装においても、
C,C++とはまだ吐き出されるコードに雲泥の差がある。
まだまだ中途半端な存在なんだね。

50 :デフォルトの名無しさん:2005/11/26(土) 22:20:52
本スレが余りに過疎で居心地が悪くなった
Haskellネタ師の溜り場はここですか?


51 :デフォルトの名無しさん:2006/01/27(金) 01:34:14
入門書がでるってはなしはどうなりましたかね?

52 :デフォルトの名無しさん:2006/01/27(金) 02:09:55
入門書出すことに意味があるのかどうか。。
そんなに一般人に媚び売ってどうすんの?

53 :デフォルトの名無しさん:2006/01/27(金) 19:33:12
あげ

54 :デフォルトの名無しさん:2006/01/28(土) 23:32:25
Haskellの是非は置いといて>>8には全く同意できない。

55 :デフォルトの名無しさん:2006/01/28(土) 23:52:03
>>54
たしかに++とか:とかの意味を知らないと>>8では理解しようがないけど、
Haskellを知っていてクイックソートを知らない奴がかりにいたとすると
やっぱりそいつは>>5を見て即座にクイックソートを理解すると思う。
その意味で、>>8が言ってることもそんなに外れてないような気がする。

関係ないが、Rubyあたりでクイックソートを書いても似たようなものになるはずなのに
なんでHaskellの特徴みたいに扱われてるんだろう…

56 :デフォルトの名無しさん:2006/01/29(日) 00:44:06
プログラムとしては全然直感的じゃないな。
数式に近い

57 :デフォルトの名無しさん:2006/01/29(日) 02:12:39
手続き型言語じゃないからね。

58 :デフォルトの名無しさん:2006/01/29(日) 07:12:15
高学歴用言語ですかね

59 :デフォルトの名無しさん:2006/01/29(日) 07:15:16
Haskell の IRC は賑わってるから、イパーン人も多いんじゃないの。

http://meme.b9.com/start.html

60 :デフォルトの名無しさん:2006/01/29(日) 11:10:00
>>56
俺にはむしろ手続き型のほうが直感的に思えない

61 :デフォルトの名無しさん:2006/01/29(日) 11:26:33
それは、抽象化された物が直感的と考えるか、具象化された物を直感的と考えるかの違いじゃないかな。
やっぱり Haskeller は、Haskell のコードからどんなアセンブラが生成されるか直ぐに分かるの?

62 :デフォルトの名無しさん:2006/01/29(日) 11:32:42
アルゴリズム的

63 :デフォルトの名無しさん:2006/01/29(日) 11:56:15
C に変換して gcc でコンパイルしてるけど
どんなコードになるのかわかりません(⊃д`)

64 :デフォルトの名無しさん:2006/01/31(火) 10:05:43
もっと議論しろ

65 :デフォルトの名無しさん:2006/01/31(火) 17:59:21
そもそも「直感的」という言葉じたいが曖昧で主観的なものだから
議論の土台としてふさわしくない。みたいな?

66 :デフォルトの名無しさん:2006/01/31(火) 18:50:26
では話題を変えてもよいぞ

67 :デフォルトの名無しさん:2006/01/31(火) 19:31:37
何か聞きたいことがあるなら素直に質問しろよw

68 :デフォルトの名無しさん:2006/01/31(火) 20:16:46
取敢えず俺ははすけるの事をまるで知らないので、
このプログラミング言語の良さを自慢して俺をワクワクさせろ。

69 :デフォルトの名無しさん:2006/01/31(火) 21:24:42
Haskellの素晴らしさは>>68みたいな馬鹿には使いこなせないところだ。
どうだ、魅力的だろ。

70 :デフォルトの名無しさん:2006/01/31(火) 21:30:42
ぱっと思い付くのはこんなところだな。

・高級言語の基本的な特徴を備えている。
メモリ操作はほとんど意識する必要がない。全部GC任せにできる。
そもそもGCの存在すら意識しなくてもいいくらいだ。オブジェクトは全部(参照やポインタでなく)値。
関数も値。手続きも値。

・代数的データ型
「タグつき共用体」とか「バリアント」とか呼ばれる奴だ。
これ一つでstructにもunionにもenumにもなる。萌え。
うまく言えないが、とても素晴らしい。

・美しい構文
予約語よりも記号を多用した簡潔な構文だ。とくにwhere節(>>5にもあるように、
ローカル変数を関数本体の後で定義する機能)は手放しがたい。

・モナド
CやPascalのセミコロンを多重定義できる機構だと思ってくれ。文が実行される文脈を定義することができる。
非決定モナドを使えば複数の選択肢から一つを決定するたびに世界の方が分裂する計算を表現できるし、
継続モナドを使えばgotoすらかわいく見える邪悪な制御構造を使うことができる。
誰にも読めないソースをつくり出すには絶好の道具だ。

・強力な静的型システム
多重定義と総称性(generics)が自然に統合されたそれなりに単純な型システムがある。
特に、型推論があって、こまごまとした指定をせずとも型に頼ったプログラミングができる。
総称的な関数はそうでない関数と同じように書けるし扱える。


ワクワクしたか?したらとっとと勉強しろ。

71 :デフォルトの名無しさん:2006/01/31(火) 21:37:53
そうだな、なかなかワクワクしてきた。
では俺様に参考書を薦めるがよい。

72 :デフォルトの名無しさん:2006/01/31(火) 21:50:46
Haskellは今年中にマスターしてみせる

73 :デフォルトの名無しさん:2006/01/31(火) 22:03:37
>>71
Haskell: The Craft of Function Programming
はとても良い本だが、俺はこれ以外に入門書を読んでいないので比較はできない。他には、
Introduction to Functional Programming using Haskell
あるいは、
The Haskell School of Expression
が有名なようだ。

webで学ぶなら、Yet Another Haskell Tutorialがほとんど唯一のまとまった入門書だと思う。

74 :デフォルトの名無しさん:2006/02/01(水) 22:34:44
限量子使えるバージョンもあるよ0うだが、、、
なんか面白いことできる ∀x∀y ∃z 

75 :デフォルトの名無しさん:2006/02/01(水) 23:38:33
顔文字にしか見えない → (∀

76 :デフォルトの名無しさん:2006/02/13(月) 20:56:42
初心者がHaskellを学ぶのに役立ちそうな文書:
http://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/

77 :デフォルトの名無しさん:2006/02/14(火) 01:46:36
役立ちそう、じゃなくて実際にいいか悪いか教えて欲しい。
文書はとにかくあれば何でもおーけーみたいのはちょっと。

78 :デフォルトの名無しさん:2006/02/14(火) 03:03:11
2番目は何もわかんない状態で役立つ。
3番目は2番目が半分以上わかるぐらいで役立つ。
4番目はGHCは読めないけどもっと普通のなら読めるぐらいになったら役立つ。
1番目はモナドがわかんない時に役立つ。

79 :デフォルトの名無しさん:2006/02/14(火) 03:23:28
スレタイに反して、良スレだな、ここは。

80 :デフォルトの名無しさん:2006/02/14(火) 06:13:50
>>78
本当に役立つのかどうか不安なレスだな。
効用: 読んだことに満足する、だったりして。



81 :デフォルトの名無しさん:2006/02/14(火) 06:40:14
>>77
俺は>>76じゃないけど、正直なところ、今日本語で読める文章で
Haskellを学び始めるのに適したものはないと思う。
一ヶ月ほどで本が出ると思われるのでそれを待つか、
MLの入門文書を読んで関数型言語に慣れてから「やさしいHaskell入門」を読むのが
近道なんじゃないだろうか。

82 :デフォルトの名無しさん:2006/02/14(火) 07:23:10
76だが、>>81に激しく同意。俺は>>76の2番目を半分ぐらい読んだ状態。
後はコード読んでHaskellの世界を開拓(Hack)してゆくしかないと思う。

83 :デフォルトの名無しさん:2006/02/14(火) 09:27:48
Hackell

84 :デフォルトの名無しさん:2006/02/14(火) 09:45:31
オライリーから
Haskell hacks
が出るのはいつの日のことですか

85 :デフォルトの名無しさん:2006/02/15(水) 04:54:51
>>84
オライリーの中の人にもオナニーと思われてる予感

86 :デフォルトの名無しさん:2006/02/15(水) 04:56:35
>>85
そだね。近所なんだからよく相談するようにね。

87 :デフォルトの名無しさん:2006/03/05(日) 06:14:03
age

88 :デフォルトの名無しさん:2006/03/05(日) 06:34:28
オライリーとオナニーって似てるよね。

89 :デフォルトの名無しさん:2006/03/15(水) 02:08:50
>>88
ねーよwwwwww

90 :デフォルトの名無しさん:2006/03/15(水) 02:19:03
オナイニー

91 :http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 20:17:15
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

92 :デフォルトの名無しさん:2006/03/23(木) 17:07:28
ハスケル学んでて報われるかな?
10年以内に

93 :デフォルトの名無しさん:2006/03/24(金) 12:09:37
言語はNEED TO KNOW

94 :デフォルトの名無しさん:2006/03/25(土) 02:30:23
入門本の評判は?
発売ってまだだっけ?

95 :デフォルトの名無しさん:2006/03/25(土) 03:53:29
>>92
言語を覚えているかどうかなんて些細な問題でしかない。
君が勉強すべきなのは数学だ。
さもなくば、ゲームが作りたいというならAPIやらライブラリやらの仕様書でも読んでろ。

96 :デフォルトの名無しさん:2006/03/27(月) 17:42:46
1流の2chブラウザを作ってWindowsからamigaまで制覇するのが夢です。

97 :デフォルトの名無しさん:2006/03/27(月) 17:50:35
まずは一流と表記することからはじめるか

98 :デフォルトの名無しさん:2006/03/27(月) 18:29:53
言語について解説した本がほしい
あの三冊ともSICPと同じことやらされて飽きる

99 :デフォルトの名無しさん:2006/03/27(月) 19:02:02
>>98
そんなあなたにGentle introduction to Haskell

100 :デフォルトの名無しさん:2006/03/27(月) 23:49:57
これってどないですか?
ttp://www.amazon.co.jp/exec/obidos/ASIN/4839919623

101 :デフォルトの名無しさん:2006/03/28(火) 00:03:37
↑まだ届いてない

102 :デフォルトの名無しさん:2006/03/29(水) 20:13:54
Haskell製2chブラウザマダー?

103 :デフォルトの名無しさん:2006/04/06(木) 06:05:36
Haskellの59%は真空で出来ています
Haskellの23%は鍛錬で出来ています
Haskellの8%は気の迷いで出来ています
Haskellの7%はミスリルで出来ています
Haskellの3%は成功の鍵で出来ています

成功の度合いは低い…

104 :デフォルトの名無しさん:2006/04/09(日) 17:10:57
それ入門書だよね。ネットに分かりやすいチュートリアルあるのに本買うのはもったいなくないか?
プログラミング初めてってんならいいかも知れんけど。

105 :デフォルトの名無しさん:2006/04/09(日) 17:54:21
わかりやすいチュートリアルってYAHTのこと?

106 :デフォルトの名無しさん:2006/04/09(日) 18:48:35
やさし(くな)いHaskell入門かも

107 :デフォルトの名無しさん:2006/04/09(日) 19:16:47
Gentle

108 :デフォルトの名無しさん:2006/04/09(日) 20:09:30
紳士的なHaskell入門

109 :デフォルトの名無しさん:2006/04/09(日) 20:19:15
そのうち萌えるHaskell入門とか出てきそうだ。

110 :デフォルトの名無しさん:2006/04/10(月) 10:13:34
応用Haskell入門

111 :デフォルトの名無しさん:2006/04/10(月) 21:07:48
応用は本気で欲しいな。

112 :デフォルトの名無しさん:2006/04/10(月) 21:11:23
>>100
読みました。
一言で言うと、トイレットペーパーの方がマシでした。

113 :デフォルトの名無しさん:2006/04/10(月) 21:41:54
まあ、理解できなかったらただの紙切れだわな

114 :デフォルトの名無しさん:2006/04/12(水) 22:31:00
転職に有利ってことはないんだろうな。

115 :デフォルトの名無しさん:2006/04/13(木) 05:00:22
>>5
単に名前の付けかたがまずいだけのような...
>>8
は分かりやすい。


116 :デフォルトの名無しさん:2006/04/13(木) 05:08:36
何でこんなマイナー言語スレ同時進行してんの?

117 :デフォルトの名無しさん:2006/04/14(金) 07:05:29
叩きネタが一瞬で尽きたのに誰も削除依頼しないから

118 :デフォルトの名無しさん:2006/04/14(金) 16:19:39
プログラム言語界を席巻するのは時間の問題だから。

119 :デフォルトの名無しさん:2006/04/15(土) 18:06:17
削除依頼しようと思う人がいないほどマイナーだから

120 :デフォルトの名無しさん:2006/04/16(日) 12:50:32
どんなに凄くても研究用じゃ実用にならないよな。
いつ根本から変わるかもわからんし。

121 :デフォルトの名無しさん:2006/04/16(日) 14:58:42
Haskellはたしかに一番美しいと思うが
どの本も最初にエレガントな解を見せておいて
実用的には別解が必要ですと来る。
その解説がものすごく手続き的。

122 :デフォルトの名無しさん:2006/04/16(日) 15:11:27
>>121
例えばどんな本?

123 :デフォルトの名無しさん:2006/04/16(日) 16:06:52
Haskellの初心者向け本出てたな。
迷わず買ったが、むずくて即挫折です

124 :デフォルトの名無しさん:2006/04/16(日) 20:44:25
>>123
MLあたりから始めて遠回りしてみたら?

125 :デフォルトの名無しさん:2006/04/20(木) 21:17:08
最強を目指すならばすべからく遠回りせよ

126 :デフォルトの名無しさん:2006/04/22(土) 08:52:33
はすけらーって延々と議論ばかりやってて一向に動くものを作らなさそう。
現場で役に立たないタイプの典型。

127 :デフォルトの名無しさん:2006/04/22(土) 12:00:55
若林 史江さんは、19歳で株を始められたそうです。

http://www.fumie-w.com/
http://be-dream.jp/200/05/205_1.php

高校を卒業するまでの私の人生はまさに順風満帆。
そんな時、突然告げられたのが父の会社の倒産。
ようやく私も事の次第がわかってきて、暗い将来を考えると涙が止まらなくて……。
「看護大に行くのはもうあきらめよう」と泣いていると、兄がこう言ってくれたんです。
「夢だった看護師をあきらめなきゃならないのはかわいそうだと思う。
でも、どんな仕事に就こうが、その世界で成功すればいいだけだよ。
……自分が置かれている分野でトップになれた人が成功者だと思う」
と慰めてくれたんです。
救われましたね〜、この言葉で。
「よし!頑張るしかない。
妹もいるし、家にお金を入れなきゃいけないんだから働こう!」
と気持ちを切り替えることができたんです。

同じ19歳でも、人生いろいろですね。


128 :デフォルトの名無しさん:2006/04/22(土) 13:07:19
若林 史江さんの成分解析結果 :

若林 史江さんの36%は夢で出来ています。
若林 史江さんの24%は乙女心で出来ています。
若林 史江さんの14%は毒電波で出来ています。
若林 史江さんの11%は花崗岩で出来ています。
若林 史江さんの8%は鍛錬で出来ています。
若林 史江さんの5%は根性で出来ています。
若林 史江さんの1%は真空で出来ています。
若林 史江さんの1%は株で出来ています。

129 :デフォルトの名無しさん:2006/04/22(土) 19:35:40
そのコピペシリーズってよく見るけど、何が面白いのかサッパリ分からんのだ。

130 :デフォルトの名無しさん:2006/04/22(土) 20:17:16
>129
コピペじゃない。
っ【成分解析 カドルコア】

131 :デフォルトの名無しさん:2006/04/23(日) 01:41:05
へえ。
占いツール(?)なのか。

ググッたけど、激しく落とす気しねーw

132 :デフォルトの名無しさん:2006/04/23(日) 14:00:21
芸人が腰を振りながら変なポーズで叫ぶ新手のネタか何かと思ってたよ。
テレビ見ている人は、その状況が勝手に脳内補完されるから面白い(流行っている)のかな、と。

まあ、俺はテレビ見ないからな。

133 :デフォルトの名無しさん:2006/04/23(日) 19:59:53
あなたの生活なんてだれも聞いてません。


134 :デフォルトの名無しさん:2006/04/23(日) 20:03:08
>>132
最近の芸人はどれもコンセプトは一緒でつまらん。
ちょうど、他人のレポートを写して書き方をちょこっと変えて提出する学生と同じ。

135 :デフォルトの名無しさん:2006/04/26(水) 01:30:25
>>134
芸人はバラエティー番組の部品だから。
usefulな部品が同じようなインターフェイスを持つようなもの。

136 :デフォルトの名無しさん:2006/04/26(水) 01:56:51
>>135
そういう環境に最適化しちゃったやつは環境の変化になかなかついてこれないから淘汰されるよ。ついてこれるのは変化に対応できたやつだけ。

137 :デフォルトの名無しさん:2006/04/28(金) 09:44:05
テレビ屋も視聴者も
今の芸人に移植性なんて期待してないんだよ

138 :デフォルトの名無しさん:2006/04/28(金) 15:33:39
それ違う

139 :デフォルトの名無しさん:2006/04/29(土) 22:00:52
>はすけらーって延々と議論ばかりやってて一向に動くものを作らなさそう。
>現場で役に立たないタイプの典型。
会社入れば、こういうことを仰る輩の実力が痛い程味わえますね。

140 :デフォルトの名無しさん:2006/04/30(日) 15:03:44
>>134
>最近の芸人はどれもコンセプトは一緒でつまらん。 

ああ、>>134 も成長したんだな。良かった良かった。

あと一つ教えてやる事があるとすると、
何もそれは「最近」に限ったことではない。
昔から同じ。

単に >>134 が昔の芸人を知らなかっただけ。


141 :デフォルトの名無しさん:2006/04/30(日) 16:58:44
芸人はどうでもいいよ

142 :デフォルトの名無しさん:2006/04/30(日) 17:11:43
質問です。

Haskellと芸人のつながりを教えてください。

143 :デフォルトの名無しさん:2006/04/30(日) 17:13:48
だからどうでもいいっていってんだろ。

144 :デフォルトの名無しさん:2006/04/30(日) 17:19:26
>>143
あなたは私ですか?
私が気にしているのに、なぜどうでもいいという答えが出てくるんですか。
まじめに考えなさい。

145 :デフォルトの名無しさん:2006/04/30(日) 17:23:08
黙れ小僧!それが人にものを訊ねる態度か!

146 :デフォルトの名無しさん:2006/04/30(日) 20:50:43
数学的だと美しいの?主観の問題じゃ?

147 :デフォルトの名無しさん:2006/04/30(日) 21:09:13
ククク…混沌こそが美しい

148 :デフォルトの名無しさん:2006/04/30(日) 21:20:32
>>146
数学的つーより、定義を書き下すスタイルが美しいと思う。

149 :デフォルトの名無しさん:2006/04/30(日) 21:20:51
>>146
時よとまれ!お前は美しい!

150 :デフォルトの名無しさん:2006/04/30(日) 21:22:49
シンプルな計算モデルに基づいてすべてを記述できるのが美しい

151 :デフォルトの名無しさん:2006/04/30(日) 21:23:27
美しいの計算モデルなのさ!!!

152 :デフォルトの名無しさん:2006/04/30(日) 21:43:08
妖星は二度と輝かぬ!

153 :デフォルトの名無しさん:2006/04/30(日) 21:55:15
わが生涯に一片の副作用なし!

154 :デフォルトの名無しさん:2006/04/30(日) 22:02:19
観察可能な副作用のない人生のなんと矮小なことか。

155 :デフォルトの名無しさん:2006/04/30(日) 22:47:58
無駄がないのが美しく感じる。

156 :デフォルトの名無しさん:2006/04/30(日) 23:15:42
表面上は副作用無いけど、
ぶっちゃけ実質的には副作用ある。

157 :デフォルトの名無しさん:2006/04/30(日) 23:24:21
実質的にはあるものを、表面上は無いように見せかけようとしてきたのが
プログラミング言語の歴史だ。

158 :デフォルトの名無しさん:2006/04/30(日) 23:27:52
>>157
そのコピペのソースはどこ?

159 :デフォルトの名無しさん:2006/04/30(日) 23:55:23
副作用に実質も糞もないだろ。
副作用って言葉自体が言語レベルの(表面上の)概念なんだから。

160 :デフォルトの名無しさん:2006/05/01(月) 00:04:13
haskellに副作用はありません。
副作用があるとかなんとか、馬鹿が鳴いてるだけですから無視してください。

161 :デフォルトの名無しさん:2006/05/01(月) 02:20:35
確かに main の返す値は常に等しいが・・・。

162 :デフォルトの名無しさん:2006/05/01(月) 16:21:26
宣言的プログラミングってやつとは全然違う?近い?

163 :デフォルトの名無しさん:2006/05/01(月) 18:01:17
違います

164 :デフォルトの名無しさん:2006/06/02(金) 19:25:52
諸君、議論したまえ。

165 :デフォルトの名無しさん:2006/06/02(金) 21:16:53
>>64か?
そろそろ勉強始めろよ。和書も出たんだし。

166 :デフォルトの名無しさん:2006/06/03(土) 18:55:27
Haskellって、アルゴリズムを書くには便利そうだけど、
それだけで完結するようなプログラムもありえないので、
ビジネスロジックだけをこれで書いて、ほかの言語から
呼び出せってモノなんでしょ?

もっといえば、ストアドみたいな。


167 :デフォルトの名無しさん:2006/06/03(土) 19:43:52
>>166
そういう使いかたもあるけど、そのための言語と言う訳ではない。
宣伝文句は「general purpose programming language」だし、
ライブラリの整備もかなりの部分は「全部Haskellで書く」方向に向かっている。

そもそも、なんでロジック以外を書くにはHaskellは不便だと思うんだ?

168 :167:2006/06/03(土) 19:46:36
自己レス

>そもそも、なんでロジック以外を書くにはHaskellは不便だと思うんだ?
いや、実際不便なんだが、それは主にライブラリの不備のせいであって、
言語がそっちを指向してる訳じゃないと思うがどうよ。

169 :デフォルトの名無しさん:2006/06/03(土) 20:44:04
>>165
はーい^^

170 :デフォルトの名無しさん:2006/06/04(日) 00:48:32
>168
簡単な解説ページしかみてないので今ひとつ自信はないんだけど、
I/O関係でムリを通そうとしてる雰囲気がほのかに・・・。

そんなんだったら、ほかの言語から呼び出すのにとどめたほうが、
みんな幸せになれそう。

正規表現を拡張して独立したプログラム言語にしようとしてるような、
ミョーな意固地さを感じる・・・。

171 :デフォルトの名無しさん:2006/06/04(日) 01:59:34
Haskell.NETで何とかならんかな、その辺は。

172 :デフォルトの名無しさん:2006/06/04(日) 02:13:40
Haskell.NETは間違いなくベーパーウェアのまま終わる

173 :デフォルトの名無しさん:2006/06/04(日) 16:13:06
C++のメソッドに対するconstってあるでしょ。
あれは、オブジェクトの状態を変えないって意味がある(実際はちょっと違うけど)
SICPにもあるけど、副作用や参照のせいで出てくるバグ(side-effect bug)も、
結構無視できない。

私の場合だけど、
副作用がある部分と、副作用が無い部分を切り分けられないかと思い
様々な言語を探していたらHaskellとかCleanとか(*)に突き当たった。

そのように見れば、IOモナドで副作用を切り分けるのもそんなに違和感が無いんじゃないかな。


(*)研究用の(実用的でない)言語なら他にもあるみたい。
http://computing-dictionary.thefreedictionary.com/Euclid


174 :デフォルトの名無しさん:2006/06/04(日) 18:11:25
はやくおまいら実用的なライブラリこさえてください。

175 :デフォルトの名無しさん:2006/06/04(日) 18:47:20
GHCはOpenGL+GLUTがついてるぜ
サンプルコードぐぐってやる気なくしたけど

176 :デフォルトの名無しさん:2006/06/04(日) 20:12:00
>>170
たぶんIOモナドの事を言ってるんだと思うが、IOをモナドで表すのは
どっちかというと言語の詳細であって、それほどプログラミングのスタイルが
影響を受ける訳じゃない。
たとえ内部が正規表現で出来ていようと、その上で普通にコードがかけるなら
問題ないんじゃないだろうか。

という訳で、別に無理をしていても良いと思うんだが、個人的には
HaskellのIOがすごく無理をしているようには感じられない。うまく言えないけど。

177 :デフォルトの名無しさん:2006/06/04(日) 20:26:01
しかし、純粋関数的に書いていたコードに副作用を加えたい場合、
let x = ...を
x <- ...
に書き換えたり、
戻り型を a から IO a や State s a に書き換えなければならない事を思うと、
Haskellで書いたプログラムのモジュール性が低いと言えなくもない。

ただ、元々副作用無しで書こうと思っていたコードに、
副作用を加えるというのは、そもそも設計段階で間違っていたとも言える。

ここで言う副作用の例は、性能評価コードや、ロギング等のための、
呼び出しカウント、ファイル出力などを考えている。
でもこういうのは他の代替可能な手段があるかもしれない。

始めからIdモナドで書けばいい、と言ってしまえばそれまでだけど。
この辺の議論ってどっかに書いてないかな。

178 :デフォルトの名無しさん:2006/06/12(月) 06:41:11
諸君、さらに議論を続けたまえ。

179 :デフォルトの名無しさん:2006/06/12(月) 07:32:33
そうやって話の腰を揉むのはよせ

180 :デフォルトの名無しさん:2006/06/12(月) 07:56:57
俺のおっぱい揉んでよ。

181 :デフォルトの名無しさん:2006/06/12(月) 07:59:16
氏ねデブ

182 :デフォルトの名無しさん:2006/06/12(月) 11:30:40
議論を再会したまえ。

183 :デフォルトの名無しさん:2006/06/12(月) 19:07:16
お前ら面白すぎ

184 :デフォルトの名無しさん:2006/06/13(火) 14:00:58
べつに面白くはないでしょ

185 :デフォルトの名無しさん:2006/06/14(水) 21:56:33
議論を展開したまえ。

186 :デフォルトの名無しさん:2006/06/15(木) 22:47:18
おっぱいもまれたい男はデブかどうか。

ピザには間違いない。

187 :デフォルトの名無しさん:2006/06/17(土) 07:48:34
その議論は終了したまえ。

188 :デフォルトの名無しさん:2006/06/17(土) 09:40:35
学者様は議論の開始・展開・終了がノンコストで行われると考えてるらしい。
実際の開発では、プログラムの開始・展開・終了の間で
作業者間でのコミュニケーションが行われ、そこのコストがもっとも大きいというのに。

189 :デフォルトの名無しさん:2006/06/17(土) 13:19:08
じゃあトップが一人で全部設計してあとはコーディングだけすれば
ノンコストだろ。コミュニケーションにコストがかかるとか言ってる
>>188方がDQNだろ

190 :デフォルトの名無しさん:2006/06/17(土) 14:25:09
>>187
したまえ

191 :デフォルトの名無しさん:2006/06/17(土) 20:41:33
>>189
俺にはこのボケに対するうまいツッコミが思いつかない

192 :デフォルトの名無しさん:2006/06/18(日) 09:54:29
今北んだが、何でコミュニケーションのコストの話になったんだ?
誰が学者様なんだ?

コミュニケーションにコストがかかるのは承知だが、
なんでそれをHaskellのスレで議論する必要が?
もっとテクニカルな話しようや

193 :デフォルトの名無しさん:2006/06/18(日) 10:01:35
俺はテクニックの話はどうでもいい。
研究的内容について議論してくれ。

194 :デフォルトの名無しさん:2006/06/18(日) 11:58:33
研究的内容って?何を求めているの?

195 :デフォルトの名無しさん:2006/06/18(日) 15:41:09
>>194
「新規性」だよ

196 :デフォルトの名無しさん:2006/06/18(日) 23:12:56
このスレで?w
んな高尚なもの求められても。。そういうのは大学のお友達とたっぷり議論するといいよ。


197 :デフォルトの名無しさん:2006/06/18(日) 23:15:25
第一こんな所に降りてくるネタなんぞに新規なものなど存在しない。
何かHaskellの新しい機能を触ろう、ってんならagreeだが。

198 :デフォルトの名無しさん:2006/06/19(月) 17:24:47
arrowってモナドと何が違うの?

199 :デフォルトの名無しさん:2006/06/19(月) 17:34:25
やっとアローズまでたどり着いたか。遅かったね。

200 :デフォルトの名無しさん:2006/06/19(月) 23:18:19
頭の回転の速さよりもセレンディピティの方が重要だと思う。

201 :デフォルトの名無しさん:2006/06/21(水) 01:36:11
クソスレでまじめな議論に飢える情報弱者www

202 :デフォルトの名無しさん:2006/06/22(木) 06:15:11
新しいものとか、テクニカルなもの、セレンディピティはおおいに結構。
Haskellの超絶技巧なテクニックだとか、こんなアプリをHaskellで書いた!とか、
こんな新しいプログラムの書き方がある!とか
そういう内容でいいんじゃないの

203 :デフォルトの名無しさん:2006/06/23(金) 00:00:10
>>202
お前このスレ立てただろ。文体からすぐわかんだよ。
自分ひとり選民意識でいるんじゃねぇよ。
↓↓↓

プログラム板から来ました
http://pc8.2ch.net/test/read.cgi/php/1150778053/

204 :デフォルトの名無しさん:2006/06/24(土) 15:40:43
議論をレジュームしたまえ。

205 :デフォルトの名無しさん:2006/06/27(火) 21:48:43
Haskell使える人ってこれからどんどん増えて行くというのに、選民もクソもないでしょ。

206 :デフォルトの名無しさん:2006/06/28(水) 01:51:37
Haskellは流行りません。研究者の一人として断言します。

207 :デフォルトの名無しさん:2006/06/28(水) 02:26:49
>>206
理由をぜひ聞きたかったりするんだが…。
これから勉強しようかと思ってるけど、ひょっとして無駄?

208 :デフォルトの名無しさん:2006/06/28(水) 06:23:53
>>207
自分の「ものの考え方」のバリエーションが広がるだけでも
全く無駄ではないよ

209 :207:2006/06/28(水) 08:35:59
>>208
あっ、いや、ある程度はもう知ってるのだけど、
Haskellは実用的にも使えるのではないかと思って
標準的な関数の使い方を全て勉強しようかという
矢先に >>206 を見たので…。

210 :デフォルトの名無しさん:2006/06/28(水) 17:52:27
Haskell は面白いけど、あんまり実用的ではないように見えるなあ。
それほど効率が求められないものや、
あるいはそれほど効率に影響のないプログラムなら問題ないけど、
効率上、副作用は必要悪だと思うなあ。

211 :デフォルトの名無しさん:2006/06/28(水) 18:10:21
Haskellが遅いのは遅延評価のせいであって、副作用は関係ないだろ。

212 :デフォルトの名無しさん:2006/06/28(水) 23:24:57
別に商用になるかどうかと流行るかどうかは関係ないでしょ。
書籍も出たことだし、Smalltalkやlisp/schemeに迫る程度には「流行る」かと。
あまり理由も示さずに間抜けな断言をするのは研究者としてどうなんだろう。

あと、副作用があれば参照が使えるので例えば再帰の代わりにforループが書ける。
Cみたいなクイックソートが書ける。副作用は、Haskell自体の遅さというより、
効率的なプログラムが書けるかどうかに掛かってくる、ということを>>210は言いたかったんでは。


213 :デフォルトの名無しさん:2006/06/28(水) 23:33:02
「Haskellは流行りません」って、Haskellを知らずに言ってるならただの馬鹿だし、
Haskellの利点を踏まえた上でそんなことを軽々しく断言されても…ちょっとアレな人な気がする
どこの馬の骨ともわからん(プログラミング言語の?)研究者が何と言おうと、流行るもんは流行るし。


214 :デフォルトの名無しさん:2006/06/28(水) 23:55:56
俺も馬の骨だが、Haskell は一般向けには流行らないと思うなぁ。
そもそも流行っている事が最も重要な人は使っていないんじゃないかな。

215 :デフォルトの名無しさん:2006/06/29(木) 00:12:06
流行らないと「思う」には同意。ただ断言できるほど物を知らないorz

>そもそも流行っている事が最も重要な人は使っていない
これの日本語的な意味がわからん。読めん。


216 :デフォルトの名無しさん:2006/06/29(木) 01:13:18
「はやっている == もっとも じゅうようなこと」だと かんがえる ひとは つかっていないんじゃないかな。

217 :デフォルトの名無しさん:2006/06/29(木) 02:45:50
絶対流行らない。
仕様を理解してもらえないと思う。

218 :デフォルトの名無しさん:2006/06/29(木) 03:20:34
でもさ、むかし、Lispすげー流行ったじゃん?

219 :デフォルトの名無しさん:2006/06/29(木) 05:28:17
>>212
forループと(効率的に)同等なものは破壊的代入を使わなくても書ける。
Haskellでも破壊的クイックソートは書ける。
リストに対しては書けないけど、これはむしろ当然だろう。

副作用があることと、代入スタイルのプログラミングができることを混同しているように見える。
「必要悪」とされるべきは代入スタイルのプログラミング。
Haskellには副作用は無いけど、代入スタイルのプログラミングをサポートしているから、
これをHaskellが遅い理由にするのはおかしい。

220 :デフォルトの名無しさん:2006/06/29(木) 05:52:08
便乗質問で申し訳ないんですが、
100MB を超えるような巨大配列を取り扱うような
科学技術計算でも大丈夫ですか?
参照透明性ということで、配列要素を一部分変更するたび毎に
配列の全コピーし直してるのかと思っているのですが大きな誤解ですか?
どうしても副作用のあるコードを書きたくなってしまいます。

221 :デフォルトの名無しさん:2006/06/29(木) 06:12:19
>>220
Haskellの配列は二系統あって、一つが変更毎に完全なコピーを作るIArrayインタフェースで、
もう一つがコピーなしで破壊的操作ができる代わりにモナドを通した操作しか認めないMArrayインタフェース。
だから、この点に関しては問題ない。科学技術計算をする上で他に障害が無いかは保障しかねるけど。

222 :デフォルトの名無しさん:2006/06/29(木) 06:40:16
>>221
MArray インターフェースですか。
そういうのが有ったんですね。それで勇気が出ました。とっても重要な情報です。

多分、他には根源的な支障はないと思います。
あともう一つ高速化手法として
最近流行の並列プログラミングもしたいのですが、
こっちは Haskell ではまだまだの段階なのかな?と勝手に思っています。

223 :デフォルトの名無しさん:2006/06/29(木) 08:38:35
>副作用があることと、代入スタイルのプログラミングができることを混同しているように見える。
IORef等への参照セルへの代入は「副作用」として知られていますが何か?
少なくとも空間効率を意識したプログラミングは副作用がないとできない。と思う。
時間効率についてはオーダーの議論で逃げればいいけど。

224 :デフォルトの名無しさん:2006/06/29(木) 08:43:28
>絶対流行らない。
>仕様を理解してもらえないと思う。
C++のバッドノウハウ集や、Javaの複雑なgenericsを理解できるなら、
Haskellの多相型や型クラスを理解するのはそう難しくはないでしょ。
GoFのVisitorやMementoパターンが理解できるなら、高階関数を使いこなすのも特に問題ないかと。
どれも一時期流行したもの。

Haskellが凡人に理解できないと思うのは、それこそ選民意識じゃない?


225 :デフォルトの名無しさん:2006/06/29(木) 09:11:42
>IORef等への参照セルへの代入は「副作用」として知られていますが何か?
言葉遣いの問題だが、副作用ってのは「関数適用や式の評価に際して計算以外のことを行うこと」
であって、IORefの操作はこの定義に当てはまらないので副作用とはいえないと思う。
そのためにわざわざ「代入的プログラミング」という言い方をしたんだが。

>少なくとも空間効率を意識したプログラミングは副作用がないとできない。と思う。
>時間効率についてはオーダーの議論で逃げればいいけど。
言葉の問題を除いて、同意。

226 :デフォルトの名無しさん:2006/06/29(木) 15:06:19
IORef とかって、IORef とかを取り除く時にコピーが発生するんじゃないの?

227 :デフォルトの名無しさん:2006/06/30(金) 01:40:42
でもまあ、Haskellで科学技術計算なんてCに比べると10倍以上遅いんで、
する気にならないですけどね。

228 :デフォルトの名無しさん:2006/06/30(金) 05:45:34
>>227
あ〜。いいんですよ。とりあえず速度は。
最終的にどんな感じのプログラムになるか実際に見てみたいんですから。
それに計算対象や入力によって速度をそれほど気にしない場合もありますし。

229 :デフォルトの名無しさん:2006/06/30(金) 08:10:05
C言語でカリカリにチューニングした速い実装を書いて、
Haskellでさくっとかいた実装の出力と比較して検算する (Nバージョンプログラミング)
というのはアリかもしれないね。

230 :デフォルトの名無しさん: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)が破壊されてしまうからである。

「狭義の副作用」という言葉があるのかどうかは知らないが、一般には代入も副作用と考えられている。

231 :デフォルトの名無しさん:2006/06/30(金) 09:46:16
>>230
誤解を招く言い方だったが、俺が指摘したかったのはそこじゃない。
>何より IORefを扱うモナド IOモナドは「副作用」を扱うモナドじゃないか。
違う。「入出力」を「副作用なしで」扱うモナドだ。
ここで言う「入出力」にはIORefの操作なんかも含める。

なんでこの区別にこだわるかというと、
>>210は「Haskellに副作用が無い」という前提で話している。
 だから少なくともこの文脈ではHaskellのIOを副作用と呼ぶのは不適切。
・unsafePerformIOなどによって導入される本物の副作用との区別ができたほうが良い。
という理由から。

232 :デフォルトの名無しさん:2006/06/30(金) 12:27:10
ああ、言いたいことは分かったよ。

IOモナドは副作用を陽に扱わない。
Haskellは、副作用を表現するIOモナドを純粋関数的に「繋いで」、mainとして定義するスタイル。
繋いだアクションが逐次実行されることで、実行形式は副作用を伴うプログラムとして動作する。
一方、unsafePerformIO はIOモナドとは違い、Haskellの遅延評価のステップの途中で
本当に「副作用的に」評価される(純粋関数の枠を壊している)。
それを言いたいのは分かった。

>・>>210は「Haskellに副作用が無い」という前提で話している。
> だから少なくともこの文脈ではHaskellのIOを副作用と呼ぶのは不適切。
どうしてその前提が読み取れるのか分からんけど。
というか明らかに IOモナドを副作用を扱うモナドでそ。unsafePerformIOと区別したいのは分かったが。
Haskellで副作用を表現できることはもはや常識なわけで、
「Haskellは副作用を(表面上)追い出した為にIOモナドというややこしい形でしか扱えない。しかし副作用は効率的なプログラムを扱う上で必要悪だよな。もっと簡単にならんのか?」
という風に読んだ。


233 :とおりすがり:2006/06/30(金) 22:38:41
・形式的にはHaskellのソースコードの中に副作用を伴う要素は無いものとみなせる。

・副作用をいわば「ランタイム側に追い出す」ための仕組みがIOモナド。
 そういう意味でIOは副作用を扱っているといえる。

(・でも本当に副作用を持つ禁断の関数も実はある。)

ってことでFA?

状態機械の仕様をフローチャート的にではなく構成的に
定義できるのってキモチイイな
do構文使ってると普通の逐次処理言語とあまり変わらないけど。
まあ気分の問題で。

234 :デフォルトの名無しさん:2006/06/30(金) 23:03:53
>do構文使ってると普通の逐次処理言語とあまり変わらないけど。
そう。というかlet文も考えようによっては逐次型っぽい。

for文やwhile文がなくて、オブジェクトのアップデートができない事を除けば、
手続き型言語も関数型言語もそんなに変わらない。
更にHaskellは純粋関数的なので順序を気にしなくていいんだけどね。


235 :とおりすがり1:2006/06/30(金) 23:52:32
fib = 1:1:zipWith (+) fib (tail fib)
= 1:1:2:3:5:8:12 ....

これはおなじみHaskell版フィボナッチ数列
遅延評価の例として一度はお目にかかるという。

これはリストのある要素の値を
遅延評価を利用して
同じリストの手前の要素から構成しているのがミソ。

#解説は「フィボナッチ Haskell」 でググるといっぱいでてくるので略

236 :とおりすがり2:2006/06/30(金) 23:55:06
で話かわってmain関数の値の話。

これって要するに最終的には

main = (IO a) >>= (IO b) >>= (IO c) >>= (IO d) ......

というふうに(IO x)を>>=でつないだ数珠繋がりに簡約されるわけで。

(IO x)中にはキー入力とか、画面出力とか、メモリの上書きとか
逐次処理言語の命令コードやサブルーチンのようなものが詰まってる。

>>232とかで言ってるアクションてやつ
ちなみに(return x)で作った(IO x)はNOP(何もしない)が入ってるとみなす。


237 :とおりすがり3:2006/06/30(金) 23:59:14
>>236のミソは
ループや分岐に相当する(IO x)は無いってこと。

なぜそれでこまらないのかというと、

フィボナッチ数列のときに
ある要素を決定するのにそれより前の要素の値を利用したように

条件分岐で次の処理として(IO y)を繋げようか(IO z)を繋げようか決めるのに
それより前の(IO x)の値をみて決める事ができるから。
あるいはそこで打ち切ってプログラムを終了してもいい。

つまり、Haskellで副作用のあるプログラムを書くってことは

フィボナッチ数列を定義するように
コマンド列を定義しているようなもの

238 :とおりすがり4:2006/07/01(土) 00:03:08
とまあ
そういう風にオイラは理解したわけです。

239 :デフォルトの名無しさん:2006/07/01(土) 06:11:52
合ってると思うっす。

240 :デフォルトの名無しさん:2006/07/01(土) 06:30:18
>>232
>どうしてその前提が読み取れるのか分からんけど。

>「Haskellは副作用を(表面上)追い出した為にIOモナドというややこしい形でしか扱えない。しかし副作用は効率的なプログラムを扱う上で必要悪だよな。もっと簡単にならんのか?」
>という風に読んだ。

そう読めるのに気付かなかった。

入出力のことを副作用と呼んでるようだが、副作用とは式の簡約の過程で入出力を行うことであって、
入出力そのもののことではないだろ。
それとも、「副作用」という言葉をそういう意味で使うことを支持する典拠があったりするのか?

多くの言語では、入出力を扱う唯一の方法が副作用なわけで、入出力と副作用を混同してもさして問題はないだろうが、
そうでない言語(たとえばHaskellやClean)の話をするときはちゃんと区別して話したほうが良いと思う。

>というか明らかに IOモナドを副作用を扱うモナドでそ。
>>231に書いたように「副作用なしで」IOを扱うためのモナド、とするのが普通だと思う。
How to declare an imperativeから引用
>This section relates the monad approach to input-output to four other widely used
>approaches: synchronised streams, as used in earlier versions of Haskell; continua-
>tions, as used in Hope; linear types, as used in Clean; and side effects, as used in
>SML.

241 :デフォルトの名無しさん:2006/07/01(土) 08:52:27
手続き型言語の代入でも、裏で全メモリの値を渡してると考えれば副作用ではないな

242 :デフォルトの名無しさん:2006/07/02(日) 00:07:46
>そうでない言語(たとえばHaskellやClean)の話をするときはちゃんと区別して話したほうが良いと思う。
なるほど、完全に同意しましたです。すまない。

更に How to declare an imperative の文がとてもわかりやすい。ありがとう。
入出力、といえば副作用と思っていたけど、同期ストリームもそうだよな。
自分ではhGetContentsくらいしか使わないけど。
linear typeで入出力ができるのもCleanのマニュアルの序章で分かる(world as value)。
しかし。。。continuationでどうやって入出力するのか??


>それとも、「副作用」という言葉をそういう意味で使うことを支持する典拠があったりするのか?
あなたが言うように、副作用と入出力を混同していた。典拠はない。


243 :242:2006/07/02(日) 00:15:21
誤解を招くと悪いので少し書くと、hGetContents自体の型は Handle -> IO StringなのでIOモナド。

ただ、hGetContentsから得たStringは遅延評価の度にファイルやネットワークデバイスから読み出される。
(データがなければブロックする)
この「遅延読みString」を処理する部分は旧来のストリーム・プログラミングっぽい(よね?


244 :デフォルトの名無しさん:2006/07/06(木) 22:15:48
C言語だと言語仕様として再帰は32回までしか保証しない(だっけ)とかだから、
再帰による33回目の関数呼び出しとそうでない呼び出しで意味が大きく変わってくる。

245 :デフォルトの名無しさん:2006/07/06(木) 23:06:29
>>244
うそつけ。Cの仕様書にそんなこと書いてないぞ。

246 :デフォルトの名無しさん:2006/07/07(金) 04:38:43
何かそういう類いのあった気がするよ。
for のネストの回数とか意外なものに、
最低保証回数が仕様として決められている。

247 :デフォルトの名無しさん:2006/07/07(金) 06:46:28
つ[5.2.4 Environmental limits]
だが、再帰回数はない。

248 :デフォルトの名無しさん:2006/07/07(金) 08:25:32
そうなのか。

249 :デフォルトの名無しさん:2006/07/07(金) 08:32:38
>>244
少し考えれば、再帰を32回まで完全保証する事が不可能だって分かるだろ。

250 :デフォルトの名無しさん:2006/07/08(土) 09:19:47
へ?不可能なの?スタックさえ確保しておけばいいんじゃねーの?

251 :デフォルトの名無しさん:2006/07/08(土) 09:22:30
>>249
ああ、確かにそうだな。

252 :デフォルトの名無しさん:2006/07/09(日) 01:07:02
>>250
ローカル変数がスタックに取得される仕様だと
消費されるスタックの量が予測できないだろ。

ローカル変数と配列の最大数×配列サイズの制限?から再帰の
最大数を決めてもあまり意味があるとも思えない。

ローカル変数をスタックに取らないといけない決まりも無いけど
ほとんどの実装で受け入れられないモノを標準仕様を
するわけにはいかなかったんだろう。

ってスレ違いごめん

253 :デフォルトの名無しさん:2006/07/09(日) 20:45:30
ローカル変数のスタック上のサイズは固定でしょ。言語にもよるけどCやC++ならそう。
そんなことも分からんやつしか居ないの?


254 :デフォルトの名無しさん:2006/07/09(日) 21:39:50
もっと優しく言ってくれ

255 :デフォルトの名無しさん:2006/07/09(日) 21:49:20
おれにはツンデレでお願い

256 :デフォルトの名無しさん:2006/07/09(日) 22:30:35
し、Cの言語仕様にスタックなんて概念は規定されてないんだからねっ!

257 :デフォルトの名無しさん:2006/07/09(日) 22:34:52
>>244-256
スレ違いの議論はこの辺で終了して下さい

258 :デフォルトの名無しさん:2006/07/10(月) 00:31:31
>>253
だからその固定の変数を最大いくつ宣言できるか判らないでしょ

259 :デフォルトの名無しさん:2006/07/10(月) 02:01:36
さらにC99だとスタック上の配列のサイズは実行時に決定できる。
すれ違いなのでこの辺までにしとこう。

260 :デフォルトの名無しさん:2006/07/10(月) 06:35:50
>>259
>>256

261 :デフォルトの名無しさん:2006/07/10(月) 12:53:18
>>259
偉そうに大嘘で締めないように。無能はしゃしゃり出ちゃいやん。

ま、スレ違いだからやめとくか。

262 :デフォルトの名無しさん:2006/07/10(月) 13:38:02
ここは一応 Haskell 本スレじゃないから、
少々脱線した所でどうでもいい気もするけどね。

263 :デフォルトの名無しさん:2006/07/10(月) 13:52:49
少々なら良いけど3日も続くとね…。
面白い話でもないしw

264 :デフォルトの名無しさん:2006/07/10(月) 22:01:26
>>260
細かいな。記憶クラスが auto の配列って言えばいいのか?

>>261
C99のマニュアル読んでね。

265 :デフォルトの名無しさん:2006/07/10(月) 22:17:04
げ。知らなかった。
int a[hoge()];
なんてやっても動くじゃん。
いままで関数内で捨てちゃう配列にmalloc使っていたのは無駄だったのか。

HaskellとRubyばっかり使っていたせいで、Cはメモリ管理がめんどくさい言語
だとばかり思っててちゃんと調べてなかった。

266 :デフォルトの名無しさん:2006/07/10(月) 22:31:16
C99 じゃないと無理だけどな。

267 :デフォルトの名無しさん:2006/07/10(月) 22:34:35
Cは99なのにHaskellはまだ98なのかー

268 :デフォルトの名無しさん:2006/07/10(月) 22:46:53
>>264
しかしそう言い直した途端にスタックの話じゃなくなる罠。

いつまでもひきずってもつまらんので、Haskellの豆知識でも。

GHCでコンパイルされたプログラムがスタックをどのように使うかはわかりにくい。
再帰呼び出しでスタックが深くなっているようにも見えないのにオーバーフローを起こしたりする。
これは、スタックの消費が、呼び出しの深さではなく正格な関数の適用のネストの深さに比例するためだ。
例えばg x = x + 1 - 1 + 1 - ..たくさん.. - 1という関数を定義すると、呼び出しの深さは一であるにも関わらず
スタックを大量に消費する。正格な関数である(+)と(-)の適用が深くネストされているからである。

269 :デフォルトの名無しさん:2006/07/11(火) 09:42:39
スタックが足りなくなったら適当に評価を行って遅延してるのを減らすとか
できないの?


270 :デフォルトの名無しさん:2006/07/11(火) 11:27:31
>>264
嘘を拡大するためだけに前言撤回で復活しなくてよろしい。

271 :デフォルトの名無しさん:2006/07/11(火) 19:11:00
>>269
未評価の式はヒープに保存されているので、それ自身はスタックを消費しない。
スタックが溢れるのは式を評価しようとしたとき。

272 :デフォルトの名無しさん:2006/07/14(金) 00:15:50
>>271 スタックあふれた時はヒープ上にスタックを移動して計算したりできないの?

273 :デフォルトの名無しさん:2006/07/14(金) 01:15:45
>>272
なんで俺らがそこまでしなきゃいけないわけ?お前何か勘違いしてない?

274 :デフォルトの名無しさん:2006/07/14(金) 01:28:55
スタックが溢れそうなのにヒープに余裕があるなどと思ってる素人はモノ喋んな。

275 :デフォルトの名無しさん:2006/07/14(金) 03:16:34
・・・

276 :デフォルトの名無しさん:2006/07/14(金) 11:25:17
頭が良くない人ほどすぐ怒る

277 :デフォルトの名無しさん:2006/07/14(金) 17:56:55
>274は50年前の世界からやってきた時空の旅人

278 :デフォルトの名無しさん:2006/07/15(土) 19:52:26
>>277
♪ぼくらは たびびと
 ときの たびびと♪

279 :デフォルトの名無しさん:2006/07/16(日) 04:35:58
Haskellは、お利口さんに見られたいけど誰もそう見てくれない
哀れな人たちの嫉妬を一身に買って出てるよね。

280 :デフォルトの名無しさん:2006/07/16(日) 14:04:58
嫉妬というか、そういう奴らがすがるための言語。
知的な奴は、そういうことを考えずに自己拡張しまくりのLispを使う。

281 :デフォルトの名無しさん:2006/07/18(火) 13:14:51
諸君議論しているかね?

282 :デフォルトの名無しさん:2006/07/19(水) 01:50:46
Haskell 面白そうなので調べていたら、Clean にたどり着いた。
両方とも、ちょっとしか解ってないが、現時点ではClean の方が良さげに思える。
でも、一般的にはHaskell の方が流行ってるみたい…。
なぜなんでしょう?

Haskell の方が良い!という人の意見が聞きたいです。

283 :デフォルトの名無しさん:2006/07/19(水) 02:56:48
ttp://groups.google.com.au/group/comp.lang.functional/msg/c09cb40a66558a19
個人的にはCleanって閉鎖的な印象を受けるからHaskellに流れてるだけ。
どっちも元はMirandaだからCommon LispとSchemeくらいにしか違わないんじゃないの?と
ろくすっぽCleanを知らないで書いてみる。

284 :デフォルトの名無しさん:2006/07/19(水) 03:02:04
ま、素人はそう考えるわな。

285 :デフォルトの名無しさん:2006/07/19(水) 03:58:51
最新ニュース 【教育】国際数学オリンピック 中国が全員金メダルで3年連続世界1位 2位ロシア、3位韓国 日本は7位も過去最高成績
1 :ネットナンパ師φ ★ :2006/07/19(水) 02:23:23 ID:???0
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位-韓国

なお参加資格は高校生までです。今すぐではなく次世代、次次世代に効いて来るものです。
それが教育の深さ、恐ろしさ。

286 :デフォルトの名無しさん:2006/07/19(水) 05:09:41
みなさんやっぱり頭がいいんですね。

287 :デフォルトの名無しさん:2006/07/19(水) 05:20:57
>>285
数学オリンピックでは中国とか凄いんだけどねえ。
なぜか欧米の方が偉大な数学者は多いよね。
インドだってラマヌジャンっていう大天才がいたし。



288 :デフォルトの名無しさん:2006/07/19(水) 10:28:12
だって数学オリンピックって数時間で処理できるような、簡単な問題を
いかに処理しきるかっていう官僚的作業だろ?
それでも俺には逆立しても解けないが。

ノーベル賞フィールズ賞取る様な何年もかけて倒す仕事とはスケールが違い過ぎるから

1kmレースを3速ギアでトップで駆け抜けたからといって
そのマシンが300kmレースを6・7速ギアでトップでゴールできるわけじゃない。

289 :デフォルトの名無しさん:2006/07/19(水) 10:57:38
>> 284
非素人の見解披露希望。

290 :282:2006/07/20(木) 02:58:24
>>283
英語、苦手でして…。
単語を拾い読みしてみましたが、Haskell は研究用で Clean は実用言語という所でしょうか?

>>284
ぜひ、具体的意見をお聞かせ下さい。

291 :デフォルトの名無しさん:2006/07/20(木) 20:36:18
Cleanは実行速度速いよ
メモリも食わない
Haskellは遅い

292 :デフォルトの名無しさん:2006/07/21(金) 00:42:59
Cleanで
echo 'main = readFile "b.txt" >>= putStr . show . (\x->x*x*x) . read'> c.hs && echo 4 > b.txt && runghc.exe c.hs
これと同じことやってみ。

293 :デフォルトの名無しさん:2006/07/21(金) 09:36:40
>>288
は、数学オリンピックについて何も知らない。

294 :デフォルトの名無しさん:2006/07/21(金) 09:39:46
Microsoftが開発中の新しいシェル「Windows PowerShell」は、RC1版以前は
「Microsoft Command Shell(開発コード名:Monad)」という名称が付けられていた。

295 :デフォルトの名無しさん:2006/07/21(金) 09:48:28
英語が苦手だとHaskellやCleanの新しい機能をすぐに使えないので楽しさ半減だろうと思う。
nobsunみたいに和訳してくれる人は普通とても少ないし。

296 :282:2006/07/22(土) 03:36:21
>>292
なる程、Haskell の利点としては
@スクリプト言語的な使い方ができる
AIOモナドだと簡潔に書ける
といった所でしょうか。

@の使い方は面白いかもしれませんね。

Aはどうなんでしょう?
エラー処理とかを考慮したプログラムも簡潔に書けるのでしょうか?

297 :282:2006/07/22(土) 03:38:17
>>295
今の所、基本的な事を覚えるだけで、アップアップですw

298 :デフォルトの名無しさん:2006/07/22(土) 05:01:32
Haskell
 関数型言語のスタンダードという役割を担うために作られた言語。
 だから、関わっている人が多いし、ライブラリも多い。

Clean
 関わっている人が少なく、ライブラリも少ない。
 異端であるがゆえに、最新の話題がCleanから出てくることはほとんどない。

という違いもある。
勉強目的ならHaskellだな。

Haskellといえばモナドだけど、Cleanでも同じようなロジックで書ける。
両者の違いは構文糖衣的な違いで、中身は似たようなもの。
Cleanで書くと、たらい回す変数を山のように書いて、文字数が2倍ぐらいになる。
Haskellはプログラムが美しい、Cleanは実行速度が速い、と言える。

299 :デフォルトの名無しさん:2006/07/23(日) 00:13:15
もっと最適化しろよハスクル

300 :デフォルトの名無しさん:2006/07/23(日) 00:15:44
カレー食いたくなった

301 :デフォルトの名無しさん:2006/07/23(日) 00:52:36
コンパイル時間をもっと短くしろよハスクル

302 :デフォルトの名無しさん:2006/07/23(日) 01:34:55
あらいぐまハスクル

303 :282:2006/07/23(日) 02:53:12
>>298
なるほど…。
なぜ、Haskell の方が一般的なのか、解ったような気がします。
ありがとうございました。

304 :デフォルトの名無しさん:2006/07/30(日) 10:30:01
ヒアドキュメント無いんだったらクソ認定

305 :デフォルトの名無しさん:2006/07/30(日) 10:58:56
確かに欠陥だ。
次版で入らんかな。

306 :デフォルトの名無しさん:2006/07/31(月) 18:40:18
自己記述してるからコンパイラが低速なんだろ?

307 :デフォルトの名無しさん:2006/08/02(水) 17:42:50
諸君議論したまえ

308 :デフォルトの名無しさん:2006/08/03(木) 20:24:15
諸君怠けてはいないか?

309 :デフォルトの名無しさん:2006/08/04(金) 16:48:43
諸君夏休みかね

310 :デフォルトの名無しさん:2006/08/05(土) 13:39:27
本物のプログラマはHaskellを使う
http://itpro.nikkeibp.co.jp/article/COLUMN/20060801/244812/

記事のタイトル、センス無い

311 :デフォルトの名無しさん:2006/08/05(土) 15:42:44
> 最後にこの連載のタイトルの由来を紹介しておきましょう。
> 「本物のプログラマはHaskellを使う」というタイトルは
> 「本物のプログラマはFORTRANを使う」や「本物のプログラマはPascalを使わない」
> といった有名なフレーズをもじったものです。

って書いてあるじゃんか。自分が知らない読んでない理解できないからって
不当に他人を卑しめるのは止めような。

312 :デフォルトの名無しさん:2006/08/05(土) 16:30:56
そういうもじりが安直だって言ってんじゃないの?

313 :デフォルトの名無しさん:2006/08/05(土) 16:53:19
そんなに悪いとは思わないけどな…
「本物のプログラマはHaskellを使わない」のほうがしっくりくると言われればそうかもしれないが。

314 :デフォルトの名無しさん:2006/08/05(土) 17:45:17
「本物のプログラマはPascalを使わない」で語られる本物は、
決してHaskellなどという"軟弱な"言語なぞ使わんと思うんだが?

315 :デフォルトの名無しさん:2006/08/05(土) 20:09:59
310のリンク先の情報処理学会のページ、おもろいな
まだ少ししか読めてないけど

316 :デフォルトの名無しさん:2006/08/05(土) 20:33:27
本物のプログラマはPASCALを使わない

参考
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

317 :デフォルトの名無しさん:2006/08/06(日) 00:46:32
この人のサイトが痛いのは本人の趣味嗜好の問題だから放っておくとして、
一昔前のgauche-devel-jpでのshiroタンとのやりとりを見る限りコンピュータの
アーキテクチャの根本が理解できていない人としか思えなかったんだが。
まぁHaskellと戯れているうちはデータがメモリ上でどう表現されているかなんて
知らなくても生きていけるってことかな。

318 :デフォルトの名無しさん:2006/08/06(日) 01:08:00
ハードに近いことは良くわかってないけど何となくプログラミングできている、ってのは文系出プログラマの得意技。

319 :デフォルトの名無しさん:2006/08/06(日) 09:28:30
Haskellの美しさにあてられら未熟な若者だ。
優しく見守ってやれ。


320 :デフォルトの名無しさん:2006/08/06(日) 16:03:48
>>317
似た名前だと思っていたら、あれと同一人物なのかよ……。


321 :デフォルトの名無しさん:2006/08/07(月) 00:56:53
同一人物、なんだろうねぇ…。
偶然一致するようなハンドル名なのかどうか判断できないから確証はないけど。
未踏にも顔出してたと思ったけど、どんな成果だったのかな。

322 :デフォルトの名無しさん:2006/08/09(水) 18:27:04
何これ? あわててブラウザを閉じたぜ。
ttp://page.freett.com/shelarcy/

323 :デフォルトの名無しさん:2006/08/10(木) 09:03:14
だれかヒアドキュメントの機能をcommitしてきてください。

324 :デフォルトの名無しさん:2006/08/10(木) 18:39:34
グラスゴウスケールって医療用語であるけど
グラスゴウハスケルと似てるね

325 :デフォルトの名無しさん:2006/08/11(金) 01:41:09
>>324
うわぁっ、すごぉっ、すげぇー!って、日常用語にあるけど、
グラスゴウスケールと似てるね。



326 :デフォルトの名無しさん:2006/08/11(金) 07:51:06
ということは
うわぁっ、すごぉっ、すげぇー!

グラスゴウハスケルは似てるわけか

327 :デフォルトの名無しさん:2006/08/16(水) 20:04:53
問1

「うわぁっ、すごぉっ、すげぇー!」を使って
長文を作りなさい

328 :デフォルトの名無しさん:2006/08/17(木) 05:51:34
それを見て、あるいは、変なものだ。うわぁっ、すごぉっ、すげぇー!
むやが及ん、すべてが、と思った。うわぁっ、すごぉっ、すげぇー!
不要なら、それが、それを出してきたところでもないのなのだ。うわぁっ、すごぉっ、すげぇー!
まだ比べできて、この本にもある。うわぁっ、すごぉっ、すげぇー!
すでに、人を手をするのを出している、バカな気が、この本のせいと、一歩だと思うんだ。うわぁっ、すごぉっ、すげぇー!
0001200-ROM人は、もう一つの問題になるので、ついにこれには、ホントには、下の時代にはその時のせいをつくるなものを読んでいるのも、それはそれを92020202/1創作連中所持とかの時代にもある。うわぁっ、すごぉっ、すげぇー!
あるいは物語もあった。うわぁっ、すごぉっ、すげぇー!
なお、その号のこともずっとさておきけれど、感じ。うわぁっ、すごぉっ、すげぇー!
プロットをすると、という感じ。うわぁっ、すごぉっ、すげぇー!
で、すでにシャープに、ほとんど無節操ないのかな。うわぁっ、すごぉっ、すげぇー!
短距離では、その戦時のお解釈年前の大解決冷や汗指標はほとんど開かかとかを手をもらった芸ばかり。うわぁっ、すごぉっ、すげぇー!


329 :デフォルトの名無しさん:2006/08/17(木) 10:12:37
ちょwww

330 :デフォルトの名無しさん:2006/08/17(木) 22:03:17
>>328
日本語による近代美術だ

331 :デフォルトの名無しさん:2006/08/18(金) 17:06:46
解読できたらごほうびをあげるわ

332 :デフォルトの名無しさん:2006/08/19(土) 05:42:40
諸君そろそろ議論に戻りたまえ。

333 :デフォルトの名無しさん:2006/08/21(月) 20:21:49
    |┃三             _________
    |┃              /
    |┃ ≡    _、_   < 話は全部聞かせて貰ったぞ!
____.|ミ\___( <_,` ) _ \
    |┃=___    \    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    |┃ ≡   )   人 \ ガラッ

334 :デフォルトの名無しさん:2006/08/27(日) 11:24:42
入門Haskellの1章目で既に挫折しそうなわけだが。
やはり、アホな俺にはjavaが似合ってるのかもしれん。

335 :デフォルトの名無しさん:2006/08/27(日) 12:05:04
>>334
一章からわりと技巧的なことをやっているので無理もないと思う。
とにかく慣れが重要なので、サンプルコードをコピペしていじりながら
慣れるのが良いんじゃないか。
意味の分からないところは2chで聞けばいいし。

336 :デフォルトの名無しさん:2006/08/27(日) 14:42:25
>>335
アドバイスありがと。
とにかく触りながら地道にやってみるか。

337 :デフォルトの名無しさん:2006/08/27(日) 16:36:09
ふつけるのほうが
入門書としては
出来がいいようなキガスルな

338 :デフォルトの名無しさん:2006/08/27(日) 19:10:52
>>328
うわぁっ、すごぉっ、すげぇー!


339 :デフォルトの名無しさん:2006/08/27(日) 20:34:23
だまれカス

340 :デフォルトの名無しさん:2006/08/27(日) 23:24:04
カスケル

341 :デフォルトの名無しさん:2006/09/03(日) 11:37:28
ttp://www.youtube.com/watch?v=eLS6GHXWMpA
みんな本当にこう感じてるのか?

342 :デフォルトの名無しさん:2006/09/03(日) 16:18:31
>>341
カコイイ

343 :デフォルトの名無しさん:2006/09/03(日) 17:38:49
>>341
すげー
Haskoreってやつを使っているのかな。

344 :デフォルトの名無しさん:2006/09/03(日) 17:51:04
>>341
最後の別のムービー紹介で
リーリ・カル・マジーロがトップに来てるのにワロタw

345 :デフォルトの名無しさん:2006/09/03(日) 17:55:45
>> 341,342,343
いまサウンドボードがイカれてて何がおもしろいのかサーッパリわからなかったんで
何を紹介しているムービーなのか解説してもらえないでせうか。

346 :デフォルトの名無しさん:2006/09/03(日) 18:12:03
>>345
音楽のリズムパート(って正しい表現?)を記述したHaskellのコードがあって、それがBGMとして流れている。
コードを編集してロードしなおすとそれに連動して音楽も変わる。

347 :デフォルトの名無しさん:2006/09/04(月) 08:14:34
よく考えればMMLとあんまりは変わらないとも言えるけど…

348 :345:2006/09/05(火) 01:10:24
>> 346
遅ればせながらサンクス。週末にでもサウンドボード調達してこよ。

349 :345:2006/09/14(木) 00:06:08
音付きで拝見しました。あまりよく知らないんだけどあんなのもHaskellが標準で
持ってる範囲内での記述なんですか?Lisp屋さんだとそれ専用のミニ言語平気で
作っちゃったりしてるけど似たようなものなのかな。

350 :デフォルトの名無しさん:2006/09/14(木) 01:16:32
328はpseudo-yamagata

351 :デフォルトの名無しさん:2006/09/14(木) 02:12:13
>>343
http://en.wikipedia.org/wiki/Haskore
こんなものがあったとは。。

352 :デフォルトの名無しさん:2006/09/19(火) 23:56:56
このスレにはイスラエルの工作員が紛れ込んでると聞きましたが。

353 :デフォルトの名無しさん:2006/09/20(水) 00:02:58
オッス オラ モサド

354 :デフォルトの名無しさん:2006/09/20(水) 00:28:57
祖国がやべえ状態だってのに
なんだかすっげえワクワクしてきたぞ!

355 :デフォルトの名無しさん:2006/09/29(金) 08:34:08
>>272
http://www.haskell.org/ghc/docs/latest/html/users_guide/runtime-control.html#rts-options-gc
GHCのマニュアルによると、スタックはヒープ上に取られ、必要に応じて伸長する。
ヒープを使いきっていないのにスタックオーバーフローが起こるのは、無限ループに陥ったときに
メモリを使い尽くさないように上限を定めているだけで、

# スタックの大きさの上限を40億バイトにする
./a.out +RTS -K4G

のように上書きできる。

356 :デフォルトの名無しさん:2006/10/06(金) 17:47:48
syntax sugar

cons :: a -> [a] -> [a]
cons a b = a : b

357 :デフォルトの名無しさん:2006/10/07(土) 23:18:37
諸君、議論したまえ。(プヒョゲラ)

358 :デフォルトの名無しさん:2006/10/08(日) 09:08:42
闇夜に仕事人の目がギロンギロン

359 :デフォルトの名無しさん:2006/10/21(土) 02:35:42


 ありがとーおー ぼくのー とーもだちー
 
   ハスカァール にー あわせてー くぅー れー ぇーてぇー



360 :デフォルトの名無しさん:2006/10/21(土) 18:26:29
良スレage

361 :デフォルトの名無しさん:2006/10/21(土) 18:55:02
なにこの流れw

362 :デフォルトの名無しさん:2006/10/21(土) 19:09:55
次スレこれでいこうぜ

【Haskell】あらいぐまハスケル【関数型言語】

363 :デフォルトの名無しさん:2006/10/24(火) 00:08:44
この言語は何で人気なの?

364 :デフォルトの名無しさん:2006/10/24(火) 00:13:15
別に大して人気はないと思う。
単に話題になることが多いだけじゃないかと。

365 :デフォルトの名無しさん:2006/10/24(火) 00:35:18
ネタにし易いからかな。

366 :デフォルトの名無しさん:2006/10/24(火) 22:24:58
http://pc8.2ch.net/test/read.cgi/tech/1149263630/909
飽きるまでなら付き合おう。
で、どこまで理解してる?

367 :デフォルトの名無しさん:2006/10/24(火) 22:35:23
module Qsort where
qsort _ [] = []
qsort f (x:xs) = before ++ (x : after)
  where before = qsort f $ filter (not . (f x)) xs
  after = qsort f $ filter (f x) xs

moduleってなによ
whereってなによ


368 :デフォルトの名無しさん:2006/10/24(火) 22:52:17
module Qsort where
ってのは、これからQsortという名前のモジュールを定義する、
詳細は以下である、と言う意味。(whereは「ただし」とでも読むべし)
モジュールというのは、おおざっぱに言うと、
一つのファイル中で定義されたものたちをひとまとめにして名前をつけたもの。
この場合はQsortモジュールはただ一個の定義(qsort)だけからなる。
プログラムの他の部分からqsortを使いたいときは、
import Qsort
として、Qsortモジュールの定義を使うことを宣言する。


369 :初心者A:2006/10/24(火) 23:03:51
モジュール・・・機能単位、交換可能な構成部分という意味の英単語(e-wordより)

なるほど。Javaでいうところのクラスみたいな感じか
import文もJavaといっしょだな
モジュール ≒ Javaのパッケージ
定義     ≒ Javaのクラス
関数     = Javaのメソッド


ここで疑問点が発生
下のような2行だけ書いたファイルでもOKのはずだけど
これはなんで module とか where とか 定義名 がいらないの?

foo x y = x + y
hoge = 2

370 :デフォルトの名無しさん:2006/10/24(火) 23:09:22
>>369
>これはなんで module とか where とか 定義名 がいらないの?
module ... whereの部分は省略することができて、その場合
module Main(main) where
と書かれているとみなされる。
(main)という括弧書きは、モジュール中の定義のうち、mainだけを外部に公開する、
という意味。括弧書きがないときは、全ての定義が公開される。

371 :デフォルトの名無しさん:2006/10/24(火) 23:25:53
デフォルトではprivate(不可視)にしてるということか

次2行目
qsort _ [] = []

これは qsort が 定義名 でいいのかな
_(アンダースコア) は 変数名っぽいけどそんなわけないよな
そして、 [ ] (配列) = [ ] (配列) 

???
わからない

372 :デフォルトの名無しさん:2006/10/24(火) 23:39:37
>>371
[]は空リスト。
_は厳密には変数名じゃないけど、そう考えても大して問題はない。
この行では、_がqsortの第一引数、[]が第二引数になっている。

qsort _ [] = []

は、qsortの第二引数が空リストのとき、第一引数に関係なく、結果は空リストである、と読む。
ここで定義しようとしているqsortは、第一引数として比較関数、第二引数としてリストを取り、
ソートされたリストを返す関数だから、この行は、「空リストをどんな比較関数を使ってソートしても結果は空リスト」と
言っていることになる。

373 :デフォルトの名無しさん:2006/10/25(水) 00:04:32
比較関数っていうのがよくわかんない
Webで探したらこんな文章発見

>でも比較関数って何?って思いますよね。
>比較関数とは2つの引数を持ち、
>引数1が引数2より小さい場合は負の整数、
>同じ場合は0、
>引数1が引数2より大きい場合は正の整数を返します。

うーん・・・
 _ (アンダースコア)がどういう役割なのかな、この場合 _(アンダースコア)以外はダメ?

例えば -(ハイフン)とか、ふつうのアルファベットとか

374 :デフォルトの名無しさん:2006/10/25(水) 00:20:58
>>373
>比較関数っていうのがよくわかんない
ここでは、引数を二つとって、第一引数が第二引数より「小さい」ときのみTrue、
そうでなければFalseを返す関数の事。
普通の意味での大小関係にしたがってTrue/Falseを返す関数を比較関数として与えれば
qsortは昇順のソートをするし、逆に数値が大きいほど「小さい」と判断する
関数を与えればqsortは降順のソートをする。さらに、例えば引数の絶対値を比べる関数を
渡せば、絶対値が小さい順にソートすることができる。

> _ (アンダースコア)がどういう役割なのかな、この場合 _(アンダースコア)以外はダメ?
仮引数の名前なので、アルファベットからなる名前を好きにつけても良い。

qsort comparer [] = []

とか。ハイフンは演算子とみなされるのでだめ。

375 :デフォルトの名無しさん:2006/10/25(水) 02:19:46
お札もえいないのか

376 :デフォルトの名無しさん:2006/10/25(水) 10:17:13
お礼を期待して2chで書くのは不毛な行為だとオモタ。

377 :デフォルトの名無しさん:2006/10/25(水) 12:05:22
>>375
「お札萌え居ないのか」?
巫女萌えならここに居るが何か。

378 :初心者A:2006/10/26(木) 02:47:04
昨日はねちゃってたよ
サンクス

また明日とかよろ

379 :デフォルトの名無しさん:2006/10/26(木) 02:59:00
おれい?

380 : ◆XbPqxIJuLU :2006/12/02(土) 02:04:39

        ∩___∩
        | ノ|||,,.ノ ヽ、,,ヽ
       /  ●   ● |  このスレは俺がもらうクマ
       |    ( _●_)  ミ  以後、「AAでHaskellのお勉強」クマ
      彡、  ,、、|∪| ,,,ノ   
      /   . ヽノ  ヽ
      |  _r'゚lニニニl]_ ____/l    
fニニニニllニニ|  \[ l===ニニl]}||||||||ll]}コl|====iニコ
|l_,,=-'''~  | \... ヽ'''ニ「_,,,l⌒l。__。_]三i三三iF
      | 〈,,/ヽ___)|ll [`ー'


381 :デフォルトの名無しさん:2006/12/02(土) 02:06:38

      ∩∩ ; とりあえずHelloWorld書いてみるクマ
      ;|ノ||`      ┬-‖
   __,/●●| __    | | ‖
   | ; |`(_●)/ ミ   . Y ‖
   | .彡|∪||、 , .|     |  ‖
  /:~ ̄ ̄ ̄ ̄:/.|    |  ‖
  ,|:::::.   .......::/>>    /  ‖
 /.:::::  .. ...::::::|'(/\_/  ‖
../:.:::    .. :.:::/.:/     /‖\
/.:::.   ....:::..:::/.:/
' ̄ ̄ ̄ ̄ ̄ _/
|_| ̄ ̄ ̄ ̄|_|


382 :デフォルトの名無しさん:2006/12/02(土) 02:09:08

main = putStrLn "Hello, World!"

   ∩___∩
   | ノ      ヽ
  /  ●   ● |   こうですか!?わかりません!
  |    ( _●_)  ミ
 彡、   |∪|  、`\
/ __  ヽノ /´>  )
(___)   / (_/
 |       /
 |  /\ \
 | /    )  )
 ∪    (  \
       \_)


383 :デフォルトの名無しさん:2006/12/02(土) 02:10:28

  できてんじゃねーかよ!
    .,. -──-、    __
   /. : : : : : : : : :\  〈〈〈〈 ヽ
  /.┛┗: : : : : : : : : :ヽ 〈⊃  ノ
. !.::┓┏,-…-…-ミ: ::', |   |       ∩___∩
 {::: : : : :i '⌒'  '⌒'i: : ::}ノ   !       | ノ --‐'  、_\
 {:: : : : : | ェェ  ェェ |: : :}   /   、   / ,_;:;:;ノ、  ● |
. { : : : : :|   ,.   |:: :;! / ,   ,,・_  |    ( _●_)  ミ
. ヾ: : :: :i r‐-ニ-┐| ::ノ/   , ’,∴ ・ ¨彡、   |∪|  ミ
   ゞイ! ヽ 二゙ノイゞ     、・∵ ’  /     ヽノ ̄ヽ
  / _ ` ー一'´ ̄/          /       /\ 〉
  (___)    /          /        /


384 :デフォルトの名無しさん:2006/12/02(土) 02:25:44
 
          ,..-──- 、
          /. : : : : : : : : : \      Haskellはmainアクションからはじまるようになっている
        /.: : : : : : : : : : : : : : ヽ
        .,!::: : : :,-…-…-ミ: : : : :',     決まりごとだから深く考えちゃダメさ
        {:: : : : :i '⌒'  '⌒' i: : : : :}     
        {:: : : : | ェェ  ェェ |: : : : :}      そうそう、Haskellは大文字と小文字を区別するよ
     .   { : : : :|   ,.、   |:: : : :;!      
        .ヾ: :: :i r‐-ニ-┐ | : : :ノ       MainでもMAINでもない、mainじゃないといけない
         ゞイ! ヽ 二゙ノ イゞ‐′
    ,.、-  ̄/  入.` ー一'´ |` ┬-、       クマくん わかるかい?
    /  ヽ. /    ト-` 、ノ- |  l  l  ヽ.
  /    ∨     l   |!  |   `> |  i
  /     |`二^>  l.  |  | <__,|  |
_|      |.|-<    \ i / ,イ____!/ \
  .|     {.|  ` - 、 ,.---ァ^! |    | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l
__{   ___|└―ー/  ̄´ |ヽ |___ノ____________|
  }/ -= ヽ__ - 'ヽ   -‐ ,r'゙   l                  |
__f゙// ̄ ̄     _ -'     |_____ ,. -  ̄ \____|
  | |  -  ̄   /   |     _ | ̄ ̄ ̄ ̄ /       \  ̄|
___`\ __ /    _l - ̄  l___ /   , /     ヽi___.|
 ̄ ̄ ̄    |    _ 二 =〒  ̄  } ̄ /     l |      ! ̄ ̄|
_______l       -ヾ ̄  l/         l|       |___|


385 :デフォルトの名無しさん:2006/12/02(土) 02:30:34

                      _ /- イ、_
  簡単クマ   __        /: : : : : : : : : : : (
          〈〈〈〈 ヽ     /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
          〈⊃  }     {:: : : :ノ --‐' 、_\: : ::}
   ∩___∩  |   |      {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}  
   | ノ      ヽ !   !   、  l: :ノ /二―-、 |: ::ノ
  /  ●   ● |  /   ,,・_  | //   ̄7/ /::ノ
  |    ( _●_)  ミ/ , ’,∴ ・ ¨  〉(_二─-┘{/
 彡、   |∪|  /  、・∵ ’  /、//|  ̄ ̄ヽ
/ __  ヽノ /         /   // |//\ 〉
(___)   /         /    //   /\ /


386 :デフォルトの名無しさん:2006/12/02(土) 02:32:43
 
                                              _ /- イ、_
    ∩___∩   あぁたたたたたたたたたたたた  /: : : : : : : : : : : (
    | ノ     ヽ                             /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
   /    ●   |     r‐っ'つ  _,rノ´)        {:: : : :ノ --‐' 、_\: : ::}
   |      ( _●) ーニ三、_,Eノ‐_r'           {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}
  彡、     |∪||   r'´)  ̄-一ーt_j'´     、   l: :ノ /二―-、 |: ::ノ
    ゝ     ヽノ _三  'ー'´)   _,∩     ,,・_    | //   ̄7/ /::ノ
   /    ー-−ニ ̄‐ヽ   ̄,_)' 一(´,__) `! , ’,∴ ・  ¨  〉(_二─-┘{/
          一 - ―゙ゝ_,.)  ニ(__,.)-''l-‐、・∵ ’    /、//|  ̄ ̄ヽ
                 一‐--(_) ノ`       /   // |//\ 〉
                      (__)'         /    //   /\ /
   putStrLnってなんだクマ?


387 :デフォルトの名無しさん:2006/12/02(土) 02:34:04

      関数名だボケ!!

       ,..||-ノ─ソ彡〈〈〈〈 ヽ
     &. : : : : : : : : : ミ〈⊃  }
    ミ.: : : : : : : : : : : : : :  |   |
    ,!::: : : :,-…-…-ミ: : : :|   |         ∩___∩
   三 : : : :i ;;;/:'  '⌒' i: : : |   |        | ノ --‐'  、_\ 
   .{:: : : : |:::+;;;  ェェ .|: : : : ニ  !   ,,・,_  / ,_;:;:;ノ、  ● |
    { : : : :|ヾ  ,.、   |:: : : :; ! / ’,∴ ・ ¨ |    ( _●_)  ミ
 / ヾ: :: :i r‐- ┃┐.| : : :ノ/、・∵ ’    彡、   |∪|   ミ
/ __ゞイ!ヽ┃ニ゙ノ イゞ‐            /     ヽノ ̄ヽ
(___)     /`'            /       /\ 〉


388 :デフォルトの名無しさん:2006/12/02(土) 02:35:05

             .,..-──- 、
           r '´. : : : : : : : : : :ヽ
          /.: : : : : : : : : : : : : :: ヽ
         ,!::: : : : : ,-…-…-ミ:: : :',
         {:: : : : : :i  ,;ノ;´:`ゞ、i: : :.:}  もともと用意されてんだよ〜っ!!
         {:: : : : : :|  ェェ;;;;;;;ェェ|: : : } 
         { : : : : ::|    ,.、 .| : : :;!∫ 
          ヾ: :: : :i   r‐-ニ┐| : riii= 
           ゞイ!   ヽ 二゙ノ イ「 ノ 
          (⌒ ー ̄ ̄´ r⌒ !  〉
           ヽ弋パラッパッパ` ー'
           〔勿\     ヽ        ベキ
               )  r⌒丶)  ベキ
     ドカ   ドカ  /   !   |' ∩__∩   ボキ
       ドカ    /   /|  l| ノ --‐'  、_\
             (    く  ! ~l / ,_;:;:;ノ、  ●| 
           ドカ   \  i   | ‖彡    ( _●_) ミ
            ,__>  ヽヽ从/ 彡 、  |∪|  ミ
            ⊂ _ ⌒ヽ从  ⊃  ヽノ ̄⊃


389 :デフォルトの名無しさん:2006/12/02(土) 02:43:42
;;;;;;;;;;;;;;;;;;;;;(:::::::::::::::::::::::::::::::   ,...ヾ ;;\::           ::l;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;/
;;;;;;;;;;;;;;;;;;;;;;;;;ー-..::::ミミミ、ヾ   ( );;) ヾ;;ヽ、           :i;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;://
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=-゙-`:::::::ミミ\ ゙゚''" i::ヽ;;i  ::         |;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:l /
;;;;;;;;;;;;;;;;;;;;;;;/:::::::    :::::::.ミ::.'ヽ.........::::::::.、'_ノ        l;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:i /
;;;;;;;;;;;;;;;;;,ノ:::::::::::.             :::.`   , 二;ニ= 、   ノ;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:ノ /
;;;;;;ー-'',:::::::::::::::              :::  ' ,rェ ヽ`  ヽ /;:;:;:;:;:;:;:;:;:;:;:;:;:// /
;;;;;;;;;;;;/"::::::::::               _i ヽ゚ ン i` /;:;:;:;:;:;:;:;:;:;:;:;:;:ノ / /
ー' ̄:::::::::::::::::     ____    /:;:;:ヽ ー  /;:;:;:;:;:;:;:;:;:;:;:;:;:// / /
:::/:::::::::::::::::::::    /;:;:;;:;:;:;:;:;:;:;:;:;:ヽ、 :;ー:ノミ; ::. /;:;:;:;:;:;:;:ー" ̄ / / / /
:/::::::::::::::::::::::::  /;:;:;/:::::::::::\ \;ヽ/ ̄   : /;:;:;:;:;/"/ / / / / /
:::::::::::::::;;::::::::::::  |:;:;:;:;:l ̄\:::::::::::\ );:ヽ    /;:;:;:;:;:;l/ / /  |\/\/ヽ∧
::::::::::::::::::;;;::::::::.  \:;:;ヽ  ヽ:::::::::::::'/;:;:/    /;:;:;:;:;:;:丿/ / _/ ハ  あ
::::::::::::::::::::;;;;::::::    \;:;\  |:::::::/;/   /;:;:;:.:_,- " / /\    ス  ら
::::::::::::::::::::::;;;;;;:::    、. \;:;\ l::/;/   / ̄/ / /  /    ケ   い
:::::::::::::::::::::::::;;;;;;;;../ ̄ ー\ ;:;:;:/   // /  / /<       ル   ぐ
::::::::::::::::::::::::::::;;/      ゙''ー 、_ /  / / / / /       !!!   ま

390 :デフォルトの名無しさん:2006/12/02(土) 02:46:09

                         _ /- イ、_
               ,       /: : : : : : : : : : : (
   意味わからんわw  ゚ + `    /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ
            ’, ’,∴ ・ ¨ {:: : : :  : : ::;:;: ;: ;:;: ;: ::}
   ∩___∩     ii  ’,∴  ェェ ( : : : ::;:;: ;: ;:;: ; : ::::} 
   |      : : ;: ヽ  ! | | ! ,・,,  (_l__\(: ::;:;: ;ヽ: ; : ::ノ
  /      : : ;: |く^⌒!|| , ,,・_(_ヽ;:;:)ヽ: ::;:;: ;:; ::ノ
  |       : : ::;:ミ ::;:| !   ∴ ・ ¨C〉 (_二:;: ;::;:/
 彡、     : : ::;:/⌒ ノ||!、 ’  ・∵ (、//|    ̄ヽ
/ /       : : ::;:/!!       /   // |//\ 〉
(_/     : : ::;:/'' ̄         /    //   /


391 :デフォルトの名無しさん:2006/12/02(土) 02:50:48


           バカ専用      普通  ハッカー ウィザード
             ┝ - - - - ┿━━━┿━━━┥
   ∩___∩   /)
   | ノ      ヽ  ( i )))
  /  ●   ● | / /
  |    ( _●_)  |ノ /   今はここら辺クマーー!!
 彡、   |∪|    ,/
/    ヽノ   /


392 :デフォルトの名無しさん:2006/12/02(土) 02:52:26

                   ∩─ー、
                 / ● 、_ `ヽ
                /  ( ●  ● |つ
                |  /(入__ノ   ミ そろそろモナドでもはじめるか・・・
                 、 (_/   ノ
                 \___ノ゙
                 / 丶' ⌒ヽ:::
                / ヽ    / /:::
               / /へ ヘ/ /:::
               / \ ヾミ  /|:::
              (__/| \___ノ/:::
                 /    /:::
                 / y   ):::
                / /  /:::
               /  /::::
              /  /:::::
             (  く::::::::
              |\  ヽ:::::
                |  .|\ \ :::::
          \    .|  .i::: \ ⌒i::
          \   | /::::   ヽ 〈::
              \ | i::::::   (__ノ:
              __ノ  ):::::
            (_,,/\


393 :デフォルトの名無しさん:2006/12/02(土) 02:53:10
    
      まだはえーーよ!
        .,..-──- 、
      r '´. : : : : : : : : : :ヽ
     /.: : : : : : : : : : : : : :: ヽ
    ,!::: : : : : ,-…-…-ミ:: : :',..  _
    {:: : : : : :i  ,;ノ;´:`ゞ、i: : :.:} / /  _____ 
    {:: : : : : :|  ェェ;;;;;;;ェェ|: : : } ./ /  /// \\ ./\ ∩___∩
    { : : : : ::|    ,.、 .| : : :;!./  \  ̄     ̄/./  | ノ --‐'  、_\
     ヾ: :: : :i   r‐-ニ┐| : r / /"\.>   .__/./   / ,_;:;:ノ、  ● |
      ゞイ!   ヽ 二゙ノ イ /__/       <__/     |    ( _●_) ミ
    /⌒  `ー―''´ヽ             \_ ~\彡、   |∪|  ミ
  /           |        //    \_/     ヽノ  ̄\
 (   く"| _____|____,,___ /   ̄Z、   /,,,,,,,,      /ヽ >
  \  ヽノ _|||||_____.爪_|―――゚'ヽ     >  ;;;'''''';;;';';;   / <_/ 
 r' ̄\_ 三〉)) ̄ ||||`ー'       `-、ゝ ̄  ;;'''    ∴。・、
 )__/. ̄ ̄   ||||           \    '':;:;,,,;;;'''`・゚。;;


394 :デフォルトの名無しさん:2006/12/02(土) 02:59:51

              -― ̄ ̄ ` ―--  _        
          , ´         ,    ~  ̄、"ー 、 
        _/          / ,r    _   ヽ ノ
       , ´           / /    ●   i"
    ,/   ,|           / / _i⌒ l| i  |
   と,-‐ ´ ̄          / / (⊂ ● j'__   |
  (´__   、       / /    ̄!,__,u●   |   モナドって言っただけで撃つことないじゃん
       ̄ ̄`ヾ_     し       u l| i /ヽ、  ちょっと調子にのっただけなのに・・・
          ,_  \           ノ(`'__ノ
        (__  ̄~" __ , --‐一~⊂  ⊃_
           ̄ ̄ ̄      ⊂ ̄    __⊃
                   ⊂_____⊃


395 :デフォルトの名無しさん:2006/12/02(土) 03:11:55

|
|.-──-、
| : : : : : : : : \
|: : : : : : : : : : : ヽ    次の問題は length関数だ
|-…-…-ミ: : : : :',
| '⌒'  '⌒' i: : : : :}    length [1, 2, 3, 4, 5, 6, 7]
| ェェ  ェェ |: : : : :}    length ["abc", "AAA", "クマ"]
|   ,.、   |:: : : :;!    length [ ""]
| r‐-ニ-┐| : : :ノ     length "ヌケドナルド"
|! ヽ 二゙ノ イゞ‐′     length "kuma"
| ` ー一'´丿 \
| \___/   /`丶、
| /~ト、   /    l \


396 :デフォルトの名無しさん:2006/12/02(土) 03:14:55

               ,..-──- 、
             /. : : : : : : : : : \
            /.: : : : : : : : : : : : : : ヽ     length関数は要素の数を返す!
           ,!::: : : :,-…-…-ミ: : : : :',     関数の右にあるのが引数だ
           {:: : : : :i '⌒'  '⌒' i: : : : :}     どんな値でも長さを調べられるぜ
           {:: : : : | ェェ  ェェ | : : : : :}     さぁ答えろ! 間違えたら殺す!!
           { : : : :|   ,.、  .| :: : : :;!
_∧        ヾ: :: :i r‐-ニ-┐ | : : :ノ        ∧
(   \       ゞイ! ヽ 二゙ノ イゞ‐ ′     //~⌒ヽ
|( ● )| i\     _,,ノ| ` ー一'´//\     /i |( ● )|
\_ノ ^i | _,,..r''''" ノ | \`', /  /  / ̄`''ー | i^ ゝ_ノ
 |_|,-''iつl/´    ヽノ| /\   / 、│     l⊂i''-,|_|
  [__|_|/〉ヽ、  / |/ );;;;/\/   'く    /〈\|_|__]
   [ニニ〉  ',  ヽ. | /⌒| /   ゚/    / 〈二二]
   └―'                        '─┘


397 :デフォルトの名無しさん:2006/12/02(土) 03:18:17

                   ∩─ー、
                 / ● 、_ `ヽ
                /  ( ●  ● |つ
                |  /(入__ノ   ミ 上から・・・
                 、 (_/   ノ
                 \___ノ゙     7
                 / 丶' ⌒ヽ:::     7
                / ヽ    / /:::     0
               / /へ ヘ/ /:::     1
               / \ ヾミ  /|:::     1
              (__/| \___ノ/:::
                 /    /:::
                 / y   ):::
                / /  /:::
               /  /::::
              /  /:::::
             (  く::::::::
              |\  ヽ:::::
                |  .|\ \ :::::
          \    .|  .i::: \ ⌒i::
          \   | /::::   ヽ 〈::
              \ | i::::::   (__ノ:
              __ノ  ):::::
            (_,,/\


398 :デフォルトの名無しさん:2006/12/02(土) 03:18:55

       ちげーーよ!!
        .,..-──- 、
      r '´. : : : : : : : : : :ヽ
     /.: : : : : : : : : : : : : :: ヽ
    ,!::: : : : : ,-…-…-ミ:: : :',..  _
    {:: : : : : :i  ,;ノ;´:`ゞ、i: : :.:} / /  _____ 
    {:: : : : : :|  ェェ;;;;;;;ェェ|: : : } ./ /  /// \\ ./\ ∩___∩
    { : : : : ::|    ,.、 .| : : :;!./  \  ̄     ̄/./  | ノ --‐'  、_\
     ヾ: :: : :i   r‐-ニ┐| : r / /"\.>   .__/./   / ,_;:;:ノ、  ● |
      ゞイ!   ヽ 二゙ノ イ /__/       <__/     |    ( _●_) ミ
    /⌒  `ー―''´ヽ             \_ ~\彡、   |∪|  ミ
  /           |        //    \_/     ヽノ  ̄\
 (   く"| _____|____,,___ /   ̄Z、   /,,,,,,,,      /ヽ >
  \  ヽノ _|||||_____.爪_|―――゚'ヽ     >  ;;;'''''';;;';';;   / <_/ 
 r' ̄\_ 三〉)) ̄ ||||`ー'       `-、ゝ ̄  ;;'''    ∴。・、
 )__/. ̄ ̄   ||||           \    '':;:;,,,;;;'''`・゚。;;



399 :デフォルトの名無しさん:2006/12/02(土) 03:26:35
                   /. : : : : : : : : : \
                  /.: : : : : : : : : : : : : : ヽ
 そんなバカなクマ     ,!::: : : :,-…-…-ミ: : : : :',
                {:: : : : :i'⌒'  '⌒' i: : : : :}
         ∩___∩ {:: : : : | ェェ  ェェ  |: : : : :}
        | ノ --‐'  、_\: : : :|  ,.、    |:: : : :;!
        / ,_;:;:;ノ、  ●ヾ: :: :i r‐-ニ-┐ | : : :ノ  上の3つは
       |    ( _●_)  ミゞイ! ヽ二゙ノ イゞ‐′   リスト(配列)だから正解!!
         彡、   |∪|  ミ  ⌒゛ /⌒ヽ\
     /⌒    ヽノ`''/ ⌒ ー--、' ,/`/
     / /~〔_彡.ミ⌒ヽー,==-、 ヽ_,zn'  /
    | | /    `^,/  ̄,ノ   ヽ、__^ノ /
    彡ノ |      /⌒ヽ i⌒ ー 、  ヽ
       ヽ     l人  |  .)  `  . |ー┐
        \    `⌒ |  ノヽ、_   ノ.ヽ」

             /. : : : : : : : : : \
           /.: : : : : : : : : : : : : : ヽ
           ,!::: : : :,-…-…-ミ: : : : :',
          {:: : : : :i '⌒'  '⌒' i: : : : :}
          {:: : : : | ェェ  ェェ |: : : : :}   でも下の2つは
          { : : : :|   ,.、   |:: : : :;!     ただの文字列!
           ヾ: :: :i r‐-ニ-┐| : : :ノ     
             ,,,! ヽ二゙ノ イゞ‐′     こういう場合は文字数を
 ひっかけクマ・・・ /      ̄⌒ヽ         数えるんだろーがぁぁ!!
            |      lヽ、 | __
     ∩___∩      L__| |_. `ヽ
     | ノ --‐'  、_\        lヽ‐'〉 .|
     / ,_;:;:;ノ、  ●ヾ     _ \/  .|
    |    ( _●_)  ミ ー-`\  \,,ノギリギリ
     彡、   |∪|  ミ.      `ヽ   )
     彡    ヽノ/      ,//  /

400 :デフォルトの名無しさん:2006/12/02(土) 03:30:11
             ,、__
            /ヽ   ``ヽ
           // ̄' ̄ ̄ヽ.\
           `i |,_, ,_,、 i .>
           ト|,:ニ/ヽ二|'ー!イ.   やはり所詮はクマ
            | ̄,.レ,..、  )7
            ! ''===i  /'.    ヌケドを殺るのはワシしかおらんな
            ヽ `! !' ,//\_
         _,―イ>`'´‐< /  \_
       _/ _/  /`―「_!―'./  /   `―::、
      _/ |i   |  ///' /  !_      \
  ._∧ノ  | i  i'  ! | | /  ・'/ i'    イi
 /   \| |  |  | | | /  _∧=i |     /|
 |( ● )| i\| i  | | | レ'/   \|       |
 \_ノ ^i || ヽ  | フ |( ● )| i\|     ノ
  |_|,-''iつl|  \/ /\_ノ ^i | ,‐、」  !|
    [ニニ〉|  / /  |_|,-''iつl \\\|
    └―'./ / /    [__|_|/〉  ) ヽ ! |
    \_/ //      [ニニ〉//  ! | 」
       |  |        └―'V | |_,,..::‐''´


401 :デフォルトの名無しさん:2006/12/02(土) 03:33:18
                                    ,..-──- 、
                         /. : : : : : : : : : \
                        /.: : : : : : : : : : : : : : ヽ
       __,、           ≡   ,!::: : : :,-…-…-ミ: : : : :',     バカめ
    〃ニ;;::`lヽ,,_          ≡ {:: : : : :i '⌒'  '⌒' i: : : : :}     ジジイの命もこれまでだ
    〈 (lll!! テ-;;;;゙fn    __,,--、_  .. {:: : : : | ェェ  ェェ |: : : : :}  ≡
   /ヽ-〃;;;;;;;llllll7,,__/"  \三=ー"{ : : : :|   ,.、   |:: : : :;!  ≡
   >、/:::/<;;;lllメ   \ヾ、  ヽTf=ヽ` : :: :i r‐-ニ-┐ | : : :ノ
  j,, ヾて)r=- | ヾ:   :ヽ;;:     | l |  l ゞイ! ヽ 二゙ノ イゞ‐′   ≡
 ,イ ヽ二)l(_,>" l|    ::\;::    | |  |  ヽ,,` ー一'/ V
 i、ヽ--イll"/ ,, ,//,,    :;;   l //  l く> /::l"'i::lll1-=:::: ̄\
 ヾ==:"::^::;;:::/;;;;;;;;;:::::::::::::: :::::ゞ ノ/   L/〈:::t_イ::/ll|─-== ヾ
  \__::::::::/::::::::::::_;;;;;;;;;;;;;;;;;ノノ   ヘ   >(゙ )l:::l-┴ヾ、ヽ  )
      ̄~~ ̄ ̄/ :::|T==--:::::  //  / ト=-|:|-─ ( l   /
         / ::  ::l l::::::::::::::::::/ /:::::::::::/:::::(ヽ--─  / |  /
         ヽ_=--"⌒ ゙゙̄ヾ:/ /:::::::/:::::::::`<==-- ノ / /
         /   /   \/::::::::::::::::::::::::::::: ̄'''"":://
        /   /     :::: ヾ::::::::::::::::::::::::::::べ__;;;--"


402 :デフォルトの名無しさん:2006/12/02(土) 03:33:59
        __ ,、
      /''    /ヽ.
     / /' ̄ ̄ ̄ ヽヽ/ ̄)
    <. i  ,_, ,_,|. i' |     くニ} {fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj
     ト,!ー|二/'ヽニ:,|イ. |
      (   ,..J,、 ̄||  |   バカモン! 遅延評価の威力を見せてくれるわ!
     .'ヽ  i==='' !   |
       ヽ, `! !'/    |
 くニ} {fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj
      /  ,へ        ̄ ̄`ヽ
       /  /  \    t──┐  |
     (__/     >   ).   |  |_
              /  /   (___)
            (  \
             \__)


403 :デフォルトの名無しさん:2006/12/02(土) 03:34:40
        __ ,、
      /''    /ヽ.
     / /' ̄ ̄ ̄ ヽヽ/ ̄)
くニ} {f<. i  ,_,({fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj
     ト,!ー|二/'ヽニ:,|イ. |
      (   ,..J,、 ̄||  |   ・・・・・・
     .'ヽ  i==='' !   |
       ヽ, `! !'/    |
 くニ} {fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj{fj
      /  ,へ        ̄ ̄`ヽ
       /  /  \    t──┐  |
     (__/     >   ).   |  |_
              /  /   (___)
            (  \
             \__)


404 :デフォルトの名無しさん:2006/12/02(土) 03:48:22

           バカ専用      普通  ハッカー ウィザード
             ┝ - - - - ┿━━━┿━━━┥
   ∩___∩   /)
   | ノ      ヽ  ( i )))
  /  ●   ● | / /
  |    ( _●_)  |ノ /   まだここら辺クマーー!!
 彡、   |∪|    ,/
/    ヽノ   /


405 :デフォルトの名無しさん:2006/12/02(土) 13:34:53
>>396,397,399
length [""]
は、空文字列をひとつ含む配列なんだから
1
だよ。

406 :デフォルトの名無しさん:2006/12/02(土) 13:59:22

       //                   |  |      ,イ
      //                    l  |     //
    //        ∩___∩        /  ||ノノ_/ /
   /'"         | ノ      ヽ     /        /
  /         ,/./  ●   ● |    /  ;/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
            ,. ‐'" |:|    ( _●_)  ミ   / ,< 間違えてんじゃねーかよ!!
       , ィ'"    |:::彡  |∪|  /   , '    \___________
     ,.イ        |:::::::L  ヽノ,,,,ノ  .//´ ̄ ̄`ヽ       \
   //i|      ,.|::::::レ! /:::::/ //        \ ( ̄`ヽ、 \
  ./:::::{ |ヽ   |ヽ∠.|::::::| メ:::::::; '_/// /`''"⌒i  ,.....,_  \、   `ヽ、\
   `''" `'''`ー-|'"  ,':::::::|':::::::; ' / /  ヾ-┤ |'´,. --.、`丶、\     `\
        ノ   {::::::/:::::::/__ノ ∠/  / _ /- イ、_  ヽ  ヽ
       /   ノ/⌒ヽ::::}   /   /: : : : : : : : : : : (' ,ノ,ハ   ガッ
     <    {ム/   }/  ∠/ /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ  |  ヽ
       `ヽ、  'ー'-'‐'′  /   {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}  !`'ー─ゝ、    _
         ヽ       /     l: :ノ /二―-、 |: ::ノ /  _  `丶..ノF'!
          ヽ-‐''" ̄``ヽ       | //   ̄7/ /::ノ ̄ヽ ̄  `i丶、__,.ノ
                          ヾ(_二─-┘{/    ヽ、_   }ヽ、
                             ̄ ̄         ``'"ー-


407 :デフォルトの名無しさん:2006/12/02(土) 21:51:40
length ["abc", "AAA", "クマ"] は 7 じゃなくて 3 だろ!

408 :デフォルトの名無しさん:2006/12/02(土) 22:57:35
                                        | | | |
                         _ /- イ、_      |_|_|_|_
    バカ野郎!             /: : : : : : : : : : : (    / 〉〉〉〉  カスが!
              l⌒)OOo    /: : : : ::;:;: ;: ;:;: ; : : : ::ゝ  {  ⊂〉
   ∩___∩    {  )  )    {:: : : :ノ --‐' 、_\: : ::}  |   |  ∩___∩
   | ノ      ヽ  | ::::::/     {:: : :ノ ,_;:;:;ノ ////ヾ: :::}  l   l /      ヽ |
  /  ●   ● |  /  ::::|   、  l: :ノ /二―-、 |: ::ノ  ヽ  | ●   ●  ヽ
  |    ( _●_)  ミ/    )  ,,・_  | //   ̄7/ /::ノ .・,,; \彡 (_●_ )    |
 彡、   |∪|   /   / ̄, ’,∴ ・ ¨   〉(_二─-┘{/ ∴ ;・, ;  \  |∪|    ミ
/ __  ヽノ  /   /  、・∵ ’   /、//|  ̄ ̄ヽ  、;:,・    ヽ. ヽノ___ ヽ
(___)    /    /        /   // |//\ 〉         ヽ (_____)


409 :デフォルトの名無しさん:2006/12/02(土) 22:58:52

                      うるせーばか!
               __       /- イ、_
  ∩___∩     /  〉〉〉〉 /: : : : : : : : : : : (
 /_ノ  `ー- ゝ\   、 {   ⊂〉/: : : : ::;:;: ;: ;:;: ; : : : ::ゝ〈〈〈〈  ヽ      ∩___∩
 | ●  ゝ:;;;:;:_, ヽ , ,・_ |    {:: : : :ノ --‐' 、_\: : ::}〈⊃   }      | ノ --‐'  、_\
彡   (_●_ ) ''  |, ’ ,∴ l    {:: : :ノ ,_;:;:;ノ、 ェェ ヾ: :::}  |    |    、 / ,_;;;:;ノ、  ● |
彡、   |∪|    ミ、・∵ ’ ヽ    l: :ノ /二―-、 |: ::ノ     !  ,,・_  |    ( _●_) ミ
γ ̄  ヽノ   ヽ)       \    | //   ̄7/ /::ノ    / , ’,∴ ・¨彡、    |∪|  ミ
〈 /i          i         \ 〉(_二─-┘{/  / 、・∵ ’  /      ヽノ ̄ヽ
  ノ        ノ          ヽ 、//|  ̄   /´       /        /\ 〉


410 :デフォルトの名無しさん:2006/12/02(土) 23:07:38
>>395
【問題】
length [1, 2, 3, 4, 5, 6, 7]
length ["abc", "AAA", "クマ"]
length [ ""]
length "ヌケドナルド"
length "kuma"

【答え】
7
3
1
6
4  ∩___∩
   | ノ      ヽ
  /  ●   ● | クマクマ
  |    ( _●_)  ミ
 彡、   |∪|  、`\
/ __  ヽノ /´>  )
(___)f^f^f^f^f^f^f^f^f^-┐
 |    |~ ~ ~ ~ ~ ~ ~ ~ ~ │
 |    | 配列は要素数 │
 |  / | 文字列は文字数|
 | /  | 正直すまんクマ |
 ∪   |_____________|
        \_)


411 :デフォルトの名無しさん:2006/12/03(日) 01:33:32
. ┌────────────────────┐
つ |   文字列     =      文字のリスト      │
. |   "kuma"   .→     ['k', 'u', 'm', 'a']      |
. | "ヌケドナルド" →  ['ヌ', 'ケ', 'ド', 'ナ', 'ル', 'ド'] .|
. └────────────────────┘

つ [] == ""

412 :デフォルトの名無しさん:2006/12/03(日) 02:50:45
正確には

[] :: [Char] だな

413 :デフォルトの名無しさん:2006/12/03(日) 19:26:12
Ctrl-Dを押すまで結果が出力されないんだが・・・。
mapMを使ってるせいだろうか。

main = do cs <- getContents
     r <- mapM hoge $ lines cs
     putStr $ head r

hoge :: String -> IO String
hoge x = return x

414 :デフォルトの名無しさん:2006/12/03(日) 21:26:50
>>413
その通り。
csの終端を見つけるまでmapM_が終わらないから、
putStrが実行されることもない。

415 :414:2006/12/03(日) 21:27:23
ごめん。mapM_じゃなくてmapMね。

416 :413:2006/12/03(日) 23:45:53
>>414,415
なるほど。ありがとう。
一行入力するごとに結果を返してほしいのだが、いい方法はないのかな。
mapMはsequence . mapらしいので、いろいろ組み合わせて書き直してみた。

main = do cs <- getContents
     mapM_ (putStr . unlines =<<) $ map sequence $ map (:[]) $ map hoge $ lines cs

hoge :: String -> IO String
hoge x = return x

こうすれば望みの結果が得られるようなのだが、ちょっとめんどくさすぎるな・・・(・∀・;)

417 :デフォルトの名無しさん:2006/12/04(月) 00:29:46
>>416
IOは上から順に実行されるのが原則(getContentsは例外)で、
評価と違って「値の要求があって初めて」実行したりはしない。
だから
r <- mapM hoge $ lines cs
とあったら、rが必要とされるか否かにかかわらずmapMは最後まで実行される。
これは、そうでないと動作の順序を予測するのが難しくなって不便だからだ。
どうしてもその挙動が必要なら、unsafeInterleaveIOという関数を使えば実現できる。

ちなみにそのコードは行ごとにputStrしているだけで、
mapM_ putStrLn $ lines cs
と書いているのとかわらない。
何がしたいかをもう少し詳しく教えてくれたら、もうちょっとまともな助言ができると思う。

418 :413:2006/12/04(月) 01:51:46
>>417
>評価と違って「値の要求があって初めて」実行したりはしない。
>だから
>r <- mapM hoge $ lines cs
>とあったら、rが必要とされるか否かにかかわらずmapMは最後まで実行される。

あぁ、なるほど。なんでうまくいかなかったのか、やっとすっきりした。
結果が必要かどうか関係ないのね・・・。
自分が作りたかったのは、ハッシュテーブルに入力されたものを入れて、そのときのハッシュテーブルの中身を返すという関数。
↓こんな感じなのを作ったのだが、入力が終わらないと処理が先に進まなくて困ってる次第。

import Data.HashTable as HashTable

main = do cs <- getContents
     hash <- new (==) hashString
     r <- mapM (hoge hash) $ lines cs
     putStr $ unlines r

hoge :: (HashTable String Int) -> String -> IO String
hoge _ [] = return []
hoge hash key = do insert hash key 1
          h <- toList hash
          return $ show h

419 :デフォルトの名無しさん:2006/12/04(月) 03:03:58
>>418
それと同じことをするだけなら、mapMでハッシュ表の操作と同時に出力もすれば良い。
mapM_ (\line -> hoge hash line >>= putStrLn) $ line cs

元のコードのように、値を生成する部分(mapM hoge)と利用する部分(putStrLn)をプログラム上で分離したい場合は
多少の工夫がいる。例えば、入出力をしながらa型の値を生み出すジェネレータを次のように定義して、
newtype Generator a = Gen (IO (Maybe (a, Generator a)))
mapMで[String]を生み出す代わりにGenerator Stringとして記述するとか。
ただし、標準のリストと違って操作関数が用意されていないので面倒ではある。

420 :413:2006/12/04(月) 14:08:07
>>419
そうか、なるほど、mapM_の中で完結させれば良かったのか・・・。
mapMの返り値を受け取って処理しないといけない、って思いこんでた。
なんて頭が固いんだ、俺はorz
ジェネレータを使って云々かんぬんってのはまだ理解できないので、もっと勉強してみるよ。
ほんとにありがと!

421 :デフォルトの名無しさん:2006/12/06(水) 11:29:31
417を読むまで、doの中に列挙されているものは上から下へ遅延評価されるものだと思ってたorz
getContentsは例外なのね・・・。GHCのソースを見たらunsafeInterleaveIOを使ってたよ。


422 :デフォルトの名無しさん:2006/12/10(日) 17:55:53
本スレを見たあとこっちに来るとなんかほっとする

423 :デフォルトの名無しさん:2006/12/10(日) 18:16:27
んじゃ、そろそろ圏論勉強会をここではじめるか

424 :デフォルトの名無しさん:2006/12/10(日) 18:36:06
AAで頼むわ

425 :デフォルトの名無しさん:2006/12/10(日) 18:42:03
>>423
仕切ってくれるの?
ちょっと期待

426 :デフォルトの名無しさん:2006/12/10(日) 19:18:52
AAじゃなくてもたのむわ
この間友達に訊かれて、Haskell使いでないけど興味持った。

427 :デフォルトの名無しさん:2006/12/10(日) 20:28:19
2ちゃんっぽい解説をわくてかしながら待ってますよ


428 :デフォルトの名無しさん:2006/12/10(日) 21:32:19
おまいら、なんで本スレに行かないんだよw

429 :デフォルトの名無しさん:2006/12/11(月) 00:00:51
だって本スレ2chのノリじゃねーんだもん

430 :デフォルトの名無しさん:2006/12/11(月) 00:12:22
あそこは2chじゃねーよなw

431 :デフォルトの名無しさん:2006/12/11(月) 00:21:23
あそこはプログラミングする気が無い奴らに犯されてしまった
今からここが本スレになります

432 :デフォルトの名無しさん:2006/12/11(月) 15:01:43
早く家に帰ってHaskellを犯りたい(*´д`)

433 :デフォルトの名無しさん:2006/12/11(月) 18:34:26
http://www.haskell.org/ghc/docs/latest/html/users_guide/primitives.html

ここ見てUnboxed typeを使ってみようとしたんだが、Top-level bindings for unlifted types aren't allowed と出てコンパイルできん。
まあ、使い方を全然理解してないせいだと思うのだが(top-level bindingsとかunliftの意味もわからんし)、どこか解説ページないかな。
つか、あのページの説明だけでみんなは理解できるのだろうか(・∀・;)


434 :デフォルトの名無しさん:2006/12/11(月) 19:00:25
>どこか解説ページないかな。
なさそう。

>top-level bindings
モジュールレベルの束縛のこと。
module Foo where
f x = let y = x + 1 in y * 2
なら、fはトップレベルの束縛で、yはそうではない。

>unlifted types
unboxed typesとほとんど同義だと思う。

というか本スレに書けyo

435 :デフォルトの名無しさん:2006/12/11(月) 19:02:43
見てみたら>>433のリンク先にlifted typeの説明あるじゃん。
>Primitive types are always unlifted; that is, a value of a primitive type cannot be bottom.

436 :433:2006/12/11(月) 21:43:56
>>434

詳しい説明をありがとう。

>>top-level bindings
>モジュールレベルの束縛のこと。

さんくす!さっきのエラーは出なくなった!
今度は#がはずせないという問題にぶち当たったけど、こっちはI#の存在に気づいて解決した。

>というか本スレに書けyo
あっちは圏論の話題が中心だから、初歩的なことは書きづらくて・・・。

>>435
>見てみたら>>433のリンク先にlifted typeの説明あるじゃん。
すまん。読んでたけどそっちも全く意味わからんかった。

437 :デフォルトの名無しさん:2006/12/11(月) 22:57:29
>>436
>すまん。読んでたけどそっちも全く意味わからんかった。
ボトムっていうのは、停止しない/エラーになる計算の結果を表す概念上の値のこと。
(この辺厳密じゃないかも。間違ってたら分かってる人が突っ込んでくれることを期待)
例えば
b :: Int
b = b
と定義したとする。bを評価しようとすると止まらないから、bにはふつうの意味での値はない。しかし、
f :: Int -> Int
f x = 4
という関数があったとして、f bは4を返す。つまりfは問題なく呼ばれている。
では呼ばれたときの引数は何か、というのが問題になるが、これを「fはボトムを引数にして呼ばれた」
ということにする。つまり、bは評価しても止まらないけど、ボトムという仮想的な値を持っていることにする。
こうすると議論が単純になる。ちなみに、こう考えると、BoolにはTrue、False、ボトムの三値があることに
なるし、32ビットマシン上のGHCではIntに2^32+1個の値があることになる。

一方、実装を考えると、fに渡されるのは未評価のbで、これの実体はクロージャ、
あるいは関数ポインタ。bを評価することは、この関数ポインタを呼び出すことに相当する。
この場合はbを評価しようとすると止まらないわけだけど、こういう挙動がありえるためにはそもそも
bが関数ポインタでなきゃならない。

unboxed typeはただの計算器上の整数で、関数ポインタを隠し持つ余地はない。
Int#は厳密に2^32個の値しかとれない。つまり、ボトムになれない。よってunlifted type。

>あっちは圏論の話題が中心だから、初歩的なことは書きづらくて・・・。
たまたま圏論の話題で盛り上がっていただけで、気にすることはないと思う。
もともとそういうスレじゃないし。むしろ俺にも分かる話題は歓迎w

438 :デフォルトの名無しさん:2006/12/11(月) 23:39:10
haskellはプログラムを書く以外にも楽しみ方がある言語だから、棲み分けが起きてもいいんじゃないかな。次スレはちゃんとしたタイトルにしようぜ


439 :デフォルトの名無しさん:2006/12/11(月) 23:44:58
たとえ住みわけが必要だとしても、板の趣旨からして、
本スレはプログラムの話題、
理論的な話は情報学板、のほうがいいんじゃないだろうか。

440 :デフォルトの名無しさん:2006/12/12(火) 15:37:04
モナドから値を取り出す関数ってないんでしょうか?
hoge :: m a -> a
みたいな.


441 :デフォルトの名無しさん:2006/12/12(火) 15:53:12
>>440
個々のモナドごとにある。
head :: [a] -> a
fromJust :: Maybe a -> a
fromMaybe :: a -> Maybe a -> a
evalState :: State s a -> s -> a
runST :: (forall s. ST s a) -> a
unsafePerformIO :: IO a -> a -- 副作用があるので取扱い注意

ちなみにIOモナドだけは値を取り出す必要がない。
取り出さずに全部まとめてそれにmainを束縛すれば良いので。

442 :デフォルトの名無しさん:2006/12/12(火) 20:07:25
>>440
>>=関数を使ってください

443 :デフォルトの名無しさん:2006/12/12(火) 21:50:17
計算の途中でIOがつくと、その後ずっとついて回るからなんか気持ち悪い

444 :デフォルトの名無しさん:2006/12/12(火) 22:35:08
>>443
それによって参照透明性を保ってるんじゃないの?
詳しい人教えて!

445 :デフォルトの名無しさん:2006/12/13(水) 16:00:42
インストールに7時間かかりました。なにこの敷居の高さ

446 :デフォルトの名無しさん:2006/12/13(水) 18:03:20
>>4457時間もあきらめずにインストールした喪前が大好きだよ!

447 :デフォルトの名無しさん:2006/12/13(水) 22:40:42
敷居が高いけど、なれてくるとかなり楽しい。
ひょっとして、haskellはツンデレ美少女なんではなかろうか。

haskell「ごめんね素直じゃなくて」
俺「いや、しょうがないって」
haskell「・・・。お兄ちゃん、IOモナドの仕組みが知りたい、って言ってたよね」
俺「ん? まーな」
haskell「でも、そのためには私の中身を見ないとだめだよね・・・」
俺「い、いや、無理しなくていいよ」
haskell「・・・。見てもいいよ」
俺「え?」
haskell「見てもいいよ! お兄ちゃんだったらいいよ!」

448 :デフォルトの名無しさん:2006/12/13(水) 23:12:10
↓Haskell Brooks Curryの肖像

449 :デフォルトの名無しさん:2006/12/14(木) 02:44:08
http://www.haskell.org/bio.html
( ・∀・) <呼んだ?


450 :デフォルトの名無しさん:2006/12/14(木) 12:04:41
今日はUnsafe IOの日だから中に出しちゃだめー!!!


451 :デフォルトの名無しさん:2006/12/14(木) 17:34:55
>>443
データ構造書くのはIOを入れずにやれという暗黙のメッセージだと思う
プログラムのしくみ本体とIOの部分を分けるということ
その方が実際動作が速いみたいだし

452 :デフォルトの名無しさん:2006/12/14(木) 21:30:35
もう、中に出すからforkIOしちゃったじゃないo(*`ε´*)o

453 :デフォルトの名無しさん:2006/12/14(木) 21:49:49
HashTableがIOを返すのがにんともかんとも・・・。

454 :デフォルトの名無しさん:2006/12/19(火) 20:27:21
本スレは活気があっていいなぁ・・・

455 :デフォルトの名無しさん:2006/12/19(火) 23:32:22
また俺がAA書いてやろうか?

456 :デフォルトの名無しさん:2006/12/20(水) 10:19:52
haskell中級者になったクマきぼん


457 :デフォルトの名無しさん:2006/12/20(水) 23:04:25
>>456
俺が初心者な以上、それは無理ってもんだ

458 :デフォルトの名無しさん:2006/12/21(木) 00:06:46
今でも遅延ストリーム萌な人いませんか?

459 :デフォルトの名無しさん:2006/12/21(木) 01:35:34
みなさんハスケルのどこが萌えですか。
僕は似たような記号を多用するその文体のとっつきにくさに萌えです。

460 :デフォルトの名無しさん:2006/12/21(木) 01:42:02
やっぱ>>447じゃね?

461 :デフォルトの名無しさん:2006/12/21(木) 03:06:45
俺はモナドという不思議な雰囲気を持ったツンデレ美少女なところに萌えてる。
haskellたんを知ってから仕事に全く集中できなくなってしまったよ・・・

129 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)