[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 10:27 / Filesize : 244 KB / Number-of Response : 901
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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

563 名前:デフォルトの名無しさん mailto:hage [2007/12/23(日) 03:41:42 ]


564 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 11:22:42 ]
クマさんのArrow講義マダ?

565 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 13:33:30 ]
arrow って命令型言語的なフローを書くための機構なんだよね?重要なの?

566 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:23:36 ]
ぶっちゃけ>>8が理解できなくて劣等感にさいなまれた。
でもHaskellをかじったら理解できた。
その経験からつまずいた点を書いてみる。

qsort [] =
qsort (x:xs) =
とqsortの定義が2つ並んでいるのが理解できなかった。

これはHaskellの階乗を見て場合分けだと理解した。
fact 0 = 1
fact n = n * fact (n - 1)

int fact(int n) {
if (n == 0) return 1;
else return n * fact(n - 1);
}

567 名前:566 mailto:sage [2007/12/29(土) 12:45:46 ]
[]が意味不明だった。
配列を[1, 2, 3]と書くと知って初めて空配列だと理解できた。

(x:xs)が意味不明だった。
他の部分で配列はすべて[]なのにここだけ()なのに違和感があった。
()はfact(n-1)のn-1と同じでx:xsが一つの要素だとくくっていると解釈した。
この辺はC言語だとコンマで区切るような所が空白で区切られているため
意識しないといけない部分だというように感じた。
そして++が配列の結合だと覚えた上で、
x:xs とはxが要素でxsが配列で [x] ++ xs という意味だと解釈した。

qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
の構文木が初見でイメージできなかった。
演算子++の優先度が高いため A ++ B ++ C と3つの配列が結合していると解釈した。
C言語風にqsort(elts_lt_x) ++ [x] ++ qsort(elts_greq_x)と書いてあれば
初見でも自力で解釈できたかもしれない。

>>10のいうように自分の知っているC言語に近いかどうかというバカの壁がある。
だからと言ってC言語を知らない人の方が先入観がなく理解しやすいとは思えないが。

568 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:55:10 ]
>>567
[1,2,3]は配列じゃなくてリスト
配列とリストの違いはググレ

569 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:57:10 ]
文法を知らなきゃ理解できんのは当然だろ

それから、細かいが、
>演算子++の優先度が高い
低い、の間違いだよな?

570 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:58:12 ]
>>10
「自分が知ってるものと似てる」=メタファ
「見たら使い方がわかる」=アフォーダンス

571 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 12:58:27 ]
配列とリストなんて計算量が違うだけじゃん。
初心者は気にしなくていいよ。



572 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:00:14 ]
>>571
だったらお前はmalloc,freeひたすら繰り返してろ

573 名前:566 mailto:sage [2007/12/29(土) 13:01:50 ]
>>569
小学校で1+2*3のとき+より*の優先度が高いと習ったと記憶していますが
これはひょっとして大間違いですか?

574 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:03:26 ]
>>573
どこに+と*が出てきてるんだ?

575 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:05:15 ]
>>573
もし(++)の優先度が関数適用より高いなら、
qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
は、
qsort (elts_lt_x ++ [x] ++ qsort) elts_greq_x
と解釈されるはずだよ。

576 名前:566 mailto:sage [2007/12/29(土) 13:07:20 ]
>>574
Haskellとは関係なくて「優先度が高い」という言葉の定義の確認で、
+と*を比較すると*が優先度が高いという言い回しが正しいかどうかです。

>>575
すみません、それ以前のレベルで、
優先度という言葉の定義があやふやでした。

よく考えたら++の優先度が低いという意味が理解できました。
1+2*3で+は後で計算していますがqsortでの++もそれと同じですね。

混乱してしまってごめんなさい。

577 名前:566 mailto:sage [2007/12/29(土) 13:14:41 ]
>>568
ご指摘ありがとうございます。
日本語のHaskell本を2冊とも買ったのでよく勉強します。

>>569
それはそうなんですが、自信たっぷりな>>8の書き方を見て、
普通の知能の人間なら文法も含めて推測できるはず
それができない俺はアホだ。
という劣等感を感じたんです。

色々とつまずきましたが、読み方が分かるようになると、
Haskellのインデントの文法はとても美しいと感じられるようになりました。
今まで好きだったPythonが糞に思えてきました。

578 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 13:18:42 ]
>>577
haskellのインデント(レイアウトのことかな)が美しいと思うのは自由ですが、
ちょっと偉い人の間では嫌っている人もかなりいます

579 名前:566 mailto:sage [2007/12/29(土) 13:26:18 ]
>>578
はい、レイアウトのことです。
もしお手数でなければ参考までに嫌われている理由をお聞きしたいです。

Pythonのインデントだとコピペの際にずれを直すのが鬱陶しいと思いました。
C言語だとずれていても無視できて、後で自動整形できますからね。

580 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 14:24:52 ]
>>579
たとえばcaseの中にcaseがあって、それがレイアウトで書かれていると、
インデントが少しずれただけで全く意味が異なる式になってしまうことがあったりするから。
だからhaskellにはブロックで書くこともできるからレイアウトを使わなくても良い。
でもレイアウトが崩れても一つの解釈しかできないところならレイアウトで書いたほうがきれいかもしれないね。

581 名前:566 mailto:sage [2007/12/29(土) 20:28:26 ]
>>580
なるほど。
レイアウトはExcelで書くのに向いているかもしれないと思いました。
そういえば副作用がない関数型のイメージをワークシートに例えた解説を
どこかで読んだのを思い出しました。

ところでqsort elts_lt_x ++ [x] ++ qsort elts_greq_xの演算子の件ですが、
単純に左から右にパースして優先度は関係ないのではないかと気付きました。
静的に型付けされているため、qsortの引数は1つしかないと決められるからです。



582 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 21:35:33 ]
>>581
ヒント: カリー化

583 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 21:38:18 ]
関数型言語初心者はマジでMLかOCamlから始めろよ
いきなりHaskellやったってわからねーだろ。

584 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 22:04:56 ]
つ「Haskell The Craf tOf Functional Programming」

↑大学の教科書になってるHaskell使ったプログラミング自体の入門書だから
いきなりやってもわかるようにできてる

この本だとモナドが最後のほうになるまででてこないから
ふつうのHaskellプログラミングと併読してもいいやも

585 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 22:16:31 ]
SML とか OCaml は(頑張れば宣言的に書く事も可能な)手続き型言語だからね
「副作用も何のその。非正格性なんて、速度を犠牲にしてまで要らないよ。
主題はメタランゲージなんだから、関数型言語なんてレッテルを貼らないでおくれ。」
という世界。

586 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 23:51:39 ]
>>585
というか、CAML開発の時点で「妥協の産物」と開発者自らが語っている。
その後継のOCAMLでレッテル貼る貼らないとか以前の問題。
その点、SMLはHaskellと同じで純粋培養した関数型っていう感じがする。
NewJergyとかいいな。

でもあえてGauchを薦めてみるw
Lisp/Scheme Familyは楽しいぞ。古きを尋ねて新きを知るという感じかな。

587 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:13:17 ]
SchemeならMonaがアツい
OS開発も一緒に楽しめて一石二鳥

588 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:24:56 ]
>>586
×Gauch
○Gauche

589 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:27:19 ]
>>587
Reading Gaucheなんてのをやってるな
ttp://wiki.monaos.org/pukiwiki.php?Reading%20Gauche

590 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:29:24 ]
Scheme は R6RS が好きになれん...

591 名前:566 mailto:sage [2007/12/30(日) 00:45:12 ]
>>582
qsortが単独で切り出されてC言語でいう関数ポインタみたいなものとして
扱われないという事実をどう解釈するかということでしょうか?
確認実験をしてみました。
inc n = n + 1
add a b = a + b
inc 2 + inc 5 → 9 (+がincより低い)
add inc 2 inc 5 → エラー (addとincが同列のため)
add (inc 2) (inc 5) → 9 (明示的に差をつける)

もし++が同列なら以下の記述を強制されそうですね。
(qsort elts_lt_x) ++ [x] ++ (qsort elts_greq_x)
括弧なしのポーランド表記とは違うのだと理解しました。

>>583
はい、しょっぱなのクイックソートからつまずきました。
実はHaskellの前に英語の本を買ってF#をやっていたんですが、
C#とパラダイムが違うという実感が湧きませんでした。
C# 3.0でラムダ式を使えばF#いらないなー、みたいな。
そんなとき、Haskellのレイアウトが美しいと気付いたんです。



592 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:53:15 ]
関数型を使うならcurryingとmonadぐらいは理解してないと使いこなせないんじゃないかな。

593 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:02:58 ]
式が二つ並んでいたら関数適用になるってことはわかってるかな
C っぽく書くと

inc 2 + inc 5 → +(inc(2))(inc(5))
add inc 2 inc 5 → add(inc)(2)(inc)(5)
add (inc 2) (inc 5) → add(inc(2))(inc(5))

594 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:38:25 ]
>>591
あなた、一度でもリファレンスに目を通しましたか?
最初から最後まで一読してから、わからないことがあれば質問してください。

595 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:39:04 ]
幸運なことに、リファレンスは日本語化されています。

596 名前:566 mailto:sage [2007/12/30(日) 01:41:46 ]
お騒がせしてすみません。
自分にHaskellは無理のようです。
色々と教えていただいてありがとうございました。

597 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:48:44 ]
アンチを増やしてどうするw

598 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:51:30 ]
この程度で挫折するようなカスのことなぞ知らん

599 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 01:52:27 ]
rubyコミュの二の舞はごめんだからな。

600 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:05:39 ]
Haskellユーザが増える→Haskellコミュの質低下→Haskellユーザ全体の技術力低下→オブジェクト指向化→Haskellはオブジェクト指向と親和性が低い→Haskellはダメ言語→Haskellコミュ衰退→乙

601 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:07:20 ]
Haskell衰退の他のシミュレーションよろ



602 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:10:02 ]
>>601
お前566だろ?
さっそく門前払いを逆恨みか

603 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:15:32 ]
>>600
オブジェクト指向化したのがConcurrent Cleanじゃね?

604 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:24:04 ]
関数型初心者はカリー化・モナド・遅延処理ぐらいまで理解してから始めてホスイ。
Cみたいなeager evaluationとHaskellみたいなLazy evaluationでは違うのだよ。

605 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:24:39 ]
>>603
それは勘違い

606 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:24:46 ]
>>603
いやOZだ。

607 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:33:52 ]
急にスレが伸びてると思ったら基地外が暴れてたのか

608 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:52:45 ]
冬だな

609 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 09:30:40 ]
スレタイどおりの糞オナニー言語ですな

610 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 10:47:28 ]
rubyは原理主義者がウザい

611 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:03:29 ]
>>610
原理主義って・・・もともとrubyは学者でもない一プログラマが実用主義の下に作った言語だろ?
rubyの原理主義とはなんだ?



612 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:04:34 ]
自分の胸に手を当ててみ

613 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:05:09 ]
貧乳がありました

614 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 12:06:55 ]
ツルペタょぅι゛ょキタ━━━━(゚∀゚)━━━━!!!!

615 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:00:47 ]
>>585
>「副作用も何のその。非正格性なんて、速度を犠牲にしてまで要らないよ。
>主題はメタランゲージなんだから、関数型言語なんてレッテルを貼らないでおくれ。」

非正格性=non-Strictness=Lazyness

わざわざ非正格性なんて判りにくい言い方をするのモナーw

616 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:06:28 ]
専門用語使うのがかっこいいと思ってる初心者さんなので許してあげてください。

617 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:15:22 ]
「正格性」の反対語なんだぜ!って感を表現したかったんじゃないの
怠惰性とか遅延性って表現はなんか違和感が

618 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:26:53 ]
そんなどうでも良い所を突っ込まれるとは思わなかった…

619 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:27:19 ]
電子工学から入った俺にしてみれば、副作用なしの関数の方がはるかに直感的だったよ。
習い始めのころでもC言語は別に難しくはなかったが、新しいことを学ぶ気持ちだった。
関数型言語で初めて今まで培った勘が役に立った感じがする。
本来のオブジェクトって言ったら抵抗とかコンデンサとかみたいに副作用がないもののはずなんだがなぁ。
なんでオブジェクト指向って言葉が根付いたのが手続き型言語の世界なんだろう。
いや、歴史的経緯は知ってるけど、納得できない。

620 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:39:19 ]
>>618
研究者の端くれなら尚更判りやすい表現を心がけるべきかと

621 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:41:16 ]
>>620
なんで研究者だと思うんですか?



622 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:52:21 ]
>>619
>なんでオブジェクト指向って言葉が根付いたのが手続き型言語の世界なんだろう。

関数型ではファンクターで抽象化できるからオブジェクト化が必要とされることがあまりなかったから。
手続き型では抽象化の方法がオブジェクト化に求められたが、これを関数型にポートする際にオブジェクト指向の関数型が必要とされた。
手続き型で蓄積された資産がすごい勢いでオブジェクト指向の関数型OCAMLにポートされつつあるからM$もF#を出す気になった。
こういった資産のひとつがOCAMLのocsigen。OCAML版Ruby on Railsのパクリ。
他にも、GaucheのKahuaもそれ系。
これらが関数型の世界でどんな進化をするのか興味深い。

623 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:58:15 ]
F#はファンクターが無い訳だがw

624 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:01:39 ]
Apple=>Ruby/Objective-C
Micro$oft=>F#/Visual-???
Unix=>Gauche/Haskell/etc

625 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:03:43 ]
>>624
いいえ、
Unixは終焉までずっとC言語です。

626 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:09:22 ]
>>625
Cはどのプラットフォームでも使うアセンブラ的なポジションになってると思う。

627 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:16:40 ]
妥協の産物=>Perl/Ruby/OCaml
理想主義者=>Squeak/Haskell
現代の化石=>C/Lisp/Fortran/COBOL

628 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:21:59 ]
COBOL?まだ使ってるところあるの?もう全部Javaになったかと思った。
Fortranは物理の世界では現役バリバリです。
Lisp・・・うーん

629 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:29:20 ]
市役所勤務の知り合いがいうには
優秀なやつはシステム課に回されてコボルやらされるらしいですよw

630 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:30:36 ]
Perl<=Larry Wall
Ruby<=Matz
OCaml<=INRIA
Squeak/Smalltalk<=Xerox Park(Allan Kay)
Haskell<=Bastiaan Heeren、Daan Leijen、Arjan van IJzendoorn
C<=K&R
Scheme<=Guy Lewis Steele Jr.、Gerald Jay Sussman
Fortran<=John Warner Backus
COBOL<=CODASYL

631 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:33:05 ]
つ「お題  プログラミング言語の父と呼ばれるのは誰?」



632 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 18:57:01 ]
チャールズ・バベッジ

633 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:19:25 ]
階差機関(difference engine)は世界初のプログラム可能な計算機と云われています。
では、どのようにプログラムしたのでしょう?

634 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:34:42 ]
>>631
まつもとゆきひろ

635 名前:デフォルトの名無しさん [2007/12/30(日) 21:54:11 ]
超良スレ保守

636 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 23:14:14 ]
プログラミング言語の父といえばシェーンフィンケルとHaskellだろう。1920年代のコンビネータ論理(Combinatory Logic)だ。
シェーンフィンケルが考案し、Haskellが開発した。
その仕事が1930年代のチャーチとクリーネによるメタ言語としてのλ算法の業績につながった。
そしてその後1954年にIBMのバッカスが最初の高級言語FORTRANを作る。

こういう歴史の直系だから、言語としてのHaskellが研究志向が強いというのもうなづける。

637 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 23:22:30 ]
カリー・ハワード同型対応なくしてプログラミング言語など存在し得ない。

638 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 23:40:29 ]
>>619
そもそも、プログラミングパラダイムとしてのオブジェクト指向というのが
「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。
本質的に「状態」を持たない関数型の世界にオブジェクト指向が入り込む余地はそもそも無い。

あと、細かいことだが
>本来のオブジェクトって言ったら抵抗とかコンデンサとかみたいに副作用がないもののはずなんだがなぁ。
コンデンサってのは電荷をためて(状態変化)それを放電する(これも状態変化)ものでないかい?
微分方程式ばかり相手にしてると忘れがちになりかねないけれども、コンデンサは確かに「状態」を持つよ。
抵抗のことはよく分からんが。

>>622
>これらが関数型の世界でどんな進化をするのか興味深い。
「純粋関数型」を標榜するHaskellとはオブジェクトは相容れないし、
OCAMLでもコード中、オブジェクト機能を使ってる部分は、「関数型っぽく」はならないだろ?
オブジェクトが関数型の世界でどうなるか、という興味は無意味だと思うね。
オブジェクトの世界と関数型の世界とがどう棲み分けて共存していくか、ならわかるが。


639 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 23:59:13 ]
>>638
オブジェクト指向と関数型が共存することでこういったことが出来ればいいなぁという要求は出てくると思う。
これまでの言語の発展だってそういうことから出てきてる。
この部分は相容れないけどこれは一緒にするとこんなことが出来るというのが実装上の工夫のポイントだと思う。
君には無意味かもしらんが。

640 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 00:35:57 ]
Y コンビネータ (fixpoint のことを Y コンビネータと呼びます。)

data X = PsiInv (X -> (Int -> Int))

psi :: X -> (X -> (Int -> Int))
psi (PsiInv f) = f

fixpoint :: ((Int -> Int) -> (Int -> Int)) -> (Int -> Int)
fixpoint g = let h y = g (\x -> psi y y x) in
h (PsiInv h)

f :: (Int -> Int) -> (Int -> Int)
f g n = if n==0 then 1
else n * g(n-1)

factorial :: Int -> Int
factorial = fixpoint f
-- factorial 10 == 3628800

641 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:48:19 ]
>>638
>そもそも、プログラミングパラダイムとしてのオブジェクト指向というのが
>「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。

ハァ?www



642 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 01:51:09 ]
>>638
>「状態と手続きを一纏めにしてカプセル化する」という動機で導入されたものだから。
どーでもいいがデータ構造とアルゴリズムを纏めるんじゃなかったかな?
状態云々は結果的にそういうプログラミング手法が出てきただけで本質的にはあんまり関係ないと思う。

まあHaskellの代数的データ型は型とデータ構造を対応付けて
型についてアルゴリズムを書くから、データ構造とアルゴリズムはほぼ完全に分離してるといえるかもしれない。
これはこれで結構分かりやすくていいシステムだとい思うんだけど、
たとえば型クラス便利だけどインターフェイスみたいにガンガン作る気にならないっていうか、
そういう細かいあたりがめんどくさくなってる気がする。
そういうのをオブジェクト指向で何とかできないものかとか思ったり。これは俺の浅知恵だけどね。

あと、細かいことだが
>コンデンサってのは電荷をためて(状態変化)それを放電する(これも状態変化)ものでないかい?
それは「副値」的なパラメータが存在するだけで実際にそれを「副作用」として実装するかはプログラマ次第では?
というかHaskellだったら普通にモナドで表現できるもんだと思う。

実世界での対応で考えると、ある力を外力と考えることも出来るし、より大きな系の内力と考えることも出来る程度の違い。
状態が存在するかどうかはどういう切り口で物事を見るかに依存している、と思う。

643 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 23:00:40 ]
オブジェクト指向と関数型が共存できないという風評は日本だけ。
どこが発信源かは知らないがこういうことが普通に受け容れられるようになったんだなぁ。
ゆとり世代が言ってるんだろうか?

644 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:04:56 ]
プログラミングに関する珍発言がまかり通るのは、日本では昔からの伝統です。
C言語が関数型言語であるとか、インタプリタはちょっとずつコード生成して実行する
処理系であるとか。

645 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:23:29 ]
後者は国の問題じゃなくマーケティングの問題でそ

646 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:47:14 ]
関数型のCAMLがオブジェクト指向を取り入れてObjective CAMLになったように、VBがλ算法を手始めに関数型を取り入れても不思議はないと思う。
VBの互換性を問題にしてる人は参照透過性とか副次作用とかを気にしてるんだろうか。OCAMLだってあまり考えずに代入とか使えば問題があるのは同じだと思うけど。
むしろOCAMLerがVBを使うときに便利だと思うけどなぁ。

647 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:49:18 ]
それとも、OCAMLとHaskellでは全く違うということを問題にしてるんだろうか。

648 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:55:06 ]
日本以外ではマルチパラダイムでお祭なのに

>オブジェクトが関数型の世界でどうなるか、という興味は無意味だと思うね。
>オブジェクトの世界と関数型の世界とがどう棲み分けて共存していくか、ならわかるが。

こういうことを周りに認めさせようとする日本人は多いんだろうなぁ。

649 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 15:43:07 ]
プログラミングする人はいっぱいいても言語を考える人が少ないんだよ

650 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:00:40 ]
まるちぱらだいむだうゎあい、って日本で竹内先生とかが頑張ったのは
世界の先を行ってたと思うんだけどな。

旧帝大-早慶-電電&電機メーカ研究所レベルの研究の浸透拡散がうまく
いかんのはどこかに構造的な問題があるんかね?

651 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:07:41 ]
>>648
別にお祭りというほどでもありませんが。
単に研究ネタがなくなったから今主流のオブジェクト指向と組み合わせてみよう、
って思ってるだけじゃないの。



652 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:11:25 ]
>>648
> こういうことを周りに認めさせようとする日本人は多いんだろうなぁ。

特定の環境にこり固まって極めちゃった悪い意味での職人型なプログラマとかにありそう。
そういう先輩が職場にいて、適切なフォローを入れる人がいなかったりすると、新人は悲惨だね。

653 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:23:02 ]
>>640
SKIコンビネータのことをまとめてるHPを発見したので報告。
ttp://ls-al.jp/blog2/item_343.html

ソースコードはこっち。
ls-al.jp/blogarchives/CompileToCombinators.hs

なぜかYコンビネータはないけどY=SLLだからすぐに作れるね。

654 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:43:45 ]
>>638みたいなMythに対しては古くからこういう有名な言葉があるんだが、

"Doing encapsulation right is a commitment not justto abstraction of state,

but to eliminate state oriented metaphors from programming."

Alan Kay, Early History of Smalltall

655 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:44:47 ]
○Smalltalk
×Smalltall

656 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:12:45 ]
Haskellはオブジェクト指向じゃないけど型クラスを使えるから準オブジェクト指向関数型言語とでも言えるのかな。
「型クラス」と「型構築子クラス」でオブジェクト指向っぽく使えて、副作用がないようにモナドやその一般化のアローが使える。
オブジェクト指向と関数型が共存出来ないと言いながらHaskellを使っている人は分裂気味なんじゃないでしょうかね。

657 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:23:03 ]
いや、Type Class と、オブジェクト指向の「クラス」は別物な訳だが

658 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:26:07 ]
>>657
だから『準』と言っている訳だが

659 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:30:37 ]
「準」とかで片付けるとかどんだけwwwwwww

ばか

660 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:38:26 ]
>>659さんは別物のクラスだとどういうことが言えると言いたい訳かな?
ご高説を是非御拝聴いたしましょう。

661 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:44:34 ]
どんだけwwwwwばか

関数型とオブジェクトなんざ共存出来ねんだよ。

無意味、無意味。無駄無駄無駄wwwwww



662 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:47:28 ]
Haskellerはオブジェクト指向もわからないばかということですか。ああそうですか。


663 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 17:49:37 ]
残念な展開だね。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<244KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef