トップページ⇒tech
986コメント341KB

関数型言語Part2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
前スレ
http://pc.2ch.net/test/read.cgi/tech/987954395/
0446444NGNG
>>445 お、これまたずいぶん関数言語っぽいJavaの拡張ですね。>>piza
#  (Generic Java や、JCP14: Adding Generic Types to the Java の祖先ですか.)

結局、この問題は、
「Javaでは first-class functionsの代わりに inner classが実装されているから、
 それを使えば高階関数を作れる」
という回答でよろしいでしょうか?

#  オブジェクト指向の形式モデルなんて言い出したのヴァカみたい>>俺
0447プロジェクト・リーダーNGNG
プロジェクト・リーダーの役割とは何か?
お教え下さい。
0448デフォルトの名無しさんNGNG
>>447 すいません、また誤爆しちまったよ.
0449デフォルトの名無しさんNGNG
また、ってあーた、前科あり?
0450デフォルトの名無しさんNGNG
>>442
>高階関数 と 高階論理 の (類似性) を

高階論理では述語だけでなく、述語に関する述語や、さらにその上の述語...
などが記述できます。さて、集合A上の述語PというのはPの特性関数
X_P:A->boolと同一視できるので、A上の述語の述語が書けるというのは
(A->bool)->boolという高階関数が書けると言いかえられます。

というように結びつけられると思われ。
0451デフォルトの名無しさん NGNG
プログラムの検証理論に関して何かよいお手本はないでしょうか?
0452デフォルトの名無しさんNGNG
プログラム検証ツールは前スレにも出ていたPVS
http://pvs.csl.sri.com/
の他にどのようなものがあるのでしょうか?
ちなみにPVSはマスターするのに最低6ヵ月必要らしいの
ですが、他のものもやはりそれぐらいかかるものですか?
0453デフォルトの名無しさんNGNG
こっちにも貼っておかなければ…

"Why Functional Programming Matters"の日本語訳
http://www.sampou.org/haskell/article/whyfp.html
0454デフォルトの名無しさんNGNG
>>452
検証とは違うけどCafeOBJも面白いよ。
0455 NGNG
>>453
それなかなかいいね。
0456デフォルトの名無しさんNGNG
lispコミュニティにも当てはまるかも…
http://www.towelrecords.com/varitext/001.html
0457デフォルトの名無しさんNGNG
有名な関数型って、
Haskell、ML,LISP,Scheme,Emacs Lisp
ぐらいですか?
0458デフォルトの名無しさんNGNG
APL と BackusのFP 辺りも、歴史的には重要鴨。
0459デフォルトの名無しさんNGNG
>457
http://pc.2ch.net/test/read.cgi/tech/1010157331/l50
のスレの>167さん?
0460デフォルトの名無しさんNGNG
age
0461名無しさん@お腹いっぱい。NGNG
.NETの関数型言語はどれだけ使えてる?
知りたいのであげ
0462デフォルトの名無しさんNGNG
>>457

MLが抜けてます〜
0463デフォルトの名無しさんNGNG
http://jbbs.shitaraba.com/study/bbs/read.cgi?BBS=18&KEY=1009968275
0464デフォルトの名無しさんNGNG
>>462
what?
0465デフォルトの名無しさん NGNG
mercuryとはいかなる言語?
なんかえらいでかいパッケージなんだけどよ。
0466デフォルトの名無しさんNGNG
>>465
「おいオメー さっきから うるせえぞ
『知りません』『知りません』ってよォーーーー
『知りません』・・・そんな言葉は使う必要がねーんだ
なぜなら オレやオレたちの仲間は その言葉を頭に浮かべた時には!
既にGoogleや書籍で調べがついちまって もうすでに『知っている』からだッ!
だから 使った事がねェーーーッ
『知っている』なら 使ってもいいッ!」
0467デフォルトの名無しさんNGNG
プログラマは知らねど安請け合い
0468絵胃碁嫁魔千NGNG
>>466
>>465 は英語読めないんじゃねえの?
mercury って日本語の情報ほとんどないし。
0469デフォルトの名無しさんNGNG
mercuryのチュートリアルを読んでみた。
論理プログラミングをサポートするMLみたいな感じだね。
現実的な感じがするところが、使えそうな・面白くなさそううな。
0470デフォルトの名無しさんNGNG
>>466
「気に入らない事でもあったのですか、何か?」
0471デフォルトの名無しさんNGNG
>>469
MLが論理プログラミングをサポートすると、どうして
>現実的な感じがするところが、使えそうな
なんでしょうか?
そうかなあ?
0472469NGNG
いや、MLが論理プログラミングをサポートすると現実的になるんじゃなくて、
論理プログラミングをML的にやると現実的になるって印象を
述べております。はい。
0473デフォルトの名無しさんNGNG
>>472
論理プログラミング言語をつかう人が聞いたら怒りそうだ(笑
0474デフォルトの名無しさんNGNG
ところでみなさん、どのような言語をお使い・・というか使えると言うか、
そういう状態なのですか?
0475デフォルトの名無しさんNGNG
DrSchemeは、電卓代わりにいつも立ちあがってます、Win98です。
0476デフォルトの名無しさんNGNG
Emacs(Meadow)の*scrach*バッファが俺の電卓だなあ。

仕事はRubyだけど、難しくなりそうなプログラムはSchemeで書いて
「本質」に迫ろうとしたり。Rubyで書くと、ad hocなコードで動か
しちゃうことになりがちなので、Schemeでプロトタイピングするこ
とによってそれを避けてます。
0477デフォルトの名無しさんNGNG
つまりみなさんLisp以外は使っておらんと言うことですか?
0478デフォルトの名無しさんNGNG
んなわけねーよ
0479デフォルトの名無しさんNGNG
>>476ad hocなコードって何?
0480デフォルトの名無しさんNGNG
ここの皆さんの仕事用言語は何ですか?
0481デフォルトの名無しさんNGNG
COBOLです。
0482デフォルトの名無しさんNGNG
>>481
ネタじゃないですよね?
とかいいながらおれも
ポストコボルみたいな
Javaだったりするから
人のこと言えないかw。
0483デフォルトの名無しさんNGNG
>>479
ad hocは普通に辞書に載っている普通の言葉だが。
「特別な」「一度限りの」という意味。
つまり、ここでは、現在解こうとしている問題に
特化したコードを書いてしまうことを指している。
再利用などまったく考えていないコードのことだ
な。Rubyはスクリプト言語だからad hocなコー
ドを書きやすい。Schemeはそうじゃないってこ
と。
0484デフォルトの名無しさんNGNG
>>483
後付けの、みたいな感じじゃないの?
0485デフォルトの名無しさんNGNG
スタブを先に作っておいて
中身を後から書いたりすることだと
思ってたが、俺、間違ってる?
0486デフォルトの名無しさんNGNG
483が正解だと思う
0487デフォルトの名無しさんNGNG
勉強になりました(485)
0488デフォルトの名無しさんNGNG
>>483
ad hocな理論、とか言うよね?
あれは「後付け」では?
0489デフォルトの名無しさんNGNG
http://dictionary.goo.ne.jp/cgi-bin/ej-more_print.cgi?MT=ad+hoc&ID=EJ-003580.txt&sw=0
http://www.dictionary.com/cgi-bin/dict.pl?term=ad+hoc&db=*
0490デフォルトの名無しさんNGNG
ad hocってのはあれだよな、
国際機関が常設されていない場合なんかを言うと思ったが。
つまり問題が起きるたびに機関を立ち上げて、
終わると閉鎖するって奴。
0491デフォルトの名無しさんNGNG
>>488
違う、「場当たり的な」と言う意味。その問題にしか適用できないような、
いわば理論とは呼べない程度の理論のこと。
0492デフォルトの名無しさんNGNG
>>491
ありがとう。

気持ち的には正しい意味で使ってた。
日本語にしようとは思わなかっただけで。

0493デフォルトの名無しさんNGNG
Excelでマクロも循環参照も使わない場合、関数型言語に似ているといえないでしょうか。

eval がないのが惜しい。
0494デフォルトの名無しさんNGNG
>>493
>eval がないのが惜しい。
evalって、LISPだけじゃないっすか。
関数型言語とevalは関係ないでしょ。

Excelって再帰できるの?
0495デフォルトの名無しさんNGNG
>493
Excelに限らず、任意の言語で関数型プログラミングの手法を
使うことはできるよね。FORTRANではさすがにきついが。
0496デフォルトの名無しさんNGNG
>>495
このあたりどうなのでしょう。
他の言語で関数風にかくことってどの程度可能なのでしょう?

再帰のできない言語では、全然ダメですし、
Javaだってコウカイ関数が使えないのであんまり生かせませんし、

たとえばCの文字列操作のような、関数のような形式で扱えないものも
関数的には扱えないですよね。
0497デフォルトの名無しさんNGNG
>496
なんで他の言語で関数風に書こうとするんだ?
そんなこと考える時間割くぐらいなら関数型言語でもやってみたら?
0498デフォルトの名無しさんNGNG
MLスレッドにレスしようと思ったが(そのような書きこみが多くあるため)
MLに限らないので、やや不便ながらこちらに書きこみます。

お初に書きこみます。
私はMLは嫌いではありません。
そういう上で思っていることです。

数学的背景があるからML(など)は別格であるという見方はちょっとどうかと
思います。
私もMLは面白いなとおもうのですが、MLが好きなほかの人の話を聞くと
ときどきやりきれなくなります。

関数型言語が数学的にサポートされているというのは、単に関数型言語が
「ある」数学的視点にとって都合の良い言語というだけであって、それ以上でも
それ以下でもないはずです。
それは言語が優れているということ(この命題はそもそもきちんと定義できて
いませんが)とはイコールではないと思います。
数学的な援軍を得やすいということだけだと思うのです。

たとえば同じ働きをプログラムをどれだけトータルで経済的に開発できるか、
という基準で考えたり、
同じものをどれだけ解りやすく(つまり低い理解力で)作り出せるかといった
風に考えた場合どうでしょう。
数学的な望ましい性質は、単なる手段に過ぎないと思います。
手段と目的がひっくり返っていませんか?

実際、MLは「使えますか?
どなたかがMLスレで書いていましたが、MLには今世の中で多いであろう
要求にたいしてまとまったライブラリがほとんどないと思うのです。
MLを使っている人は一体何をしているのでしょう?言語と戯れているだけで
実際に使おうとしないのですか?実際に使おうとすると自然にいろいろな資
産が残るとおもうのですが。

個人的には関数型には非常な可能性を感じます。
ぜひ、仕様の口上じゃなくて「実績」で他の言語を蹴散らしてください。
0499デフォルトの名無しさんNGNG
>>498
つーか、この板でつかってるやついるのか?実は498だけだったりしないか?
0500デフォルトの名無しさんNGNG
>>498
ていうか、実際ML使ってる人なんてほとんどいないと思うけど、
その使ってる人の中には、その数学的な特徴が一番重要で、
それゆえ「自分にとって」別格であると思ってる人がいるん
じゃないかな。
その人がそう思ってることをあなたが否定するのこそ
間違ってることだと思うよ。
0501デフォルトの名無しさんNGNG
>>499-500
>>498さんは「使う」人にもっと話して欲しくて煽っているんじゃないかな。
0502デフォルトの名無しさんNGNG
>>498

数学的背景がある、というのは言語の設計哲学とか設計上の方法論というべき
ものではないでしょうか。そもそも関数型言語には他にも目を向けるべき重要
なセールスポイントがいくつもあります。型推論、型チェック、ポリモルフィ
ズム、モジュールなどがそうであり、それらは生産性とか可読性を向上させる
目的で実装されています。

足回りが貧弱な感は否めません。ライブラリがないから誰も使わないのか、誰
も使わないからライブラリが放置されているのか...悪循環。
0503名無しさん@navi2chNGNG
数学に対するコンプレックスがあることは否めません。
それはまともなプログラマであれば全ての人が抱くことです。
まずは自分の心に正直になりましょうw。

で、話は変わりますが、
言語として優れていても凡人にとっつきにくいのは
やはり実用的な意味ではゼロに近いです。ですが残り僅かな
ところでかなり有用なのではないでしょうか?
クリティカルなプログラムがCで組まれているのは、
生産性という点から見てもあまり誉められたものではありません。
関数型言語の特性としてプログラムの検証を行えるというのが
強みなのですから、そこをもっと前面に出していってもいいのでは?

既存の言語で既に実現できていることを関数型言語でもやってみろ
という煽りは、2ch的に見ても低レベルだと思います。

私自身は、プログラム検証には興味がありそれ、
それが実在するツールではどの程度実現できているのか、
そんなところが知りたくて今、Haskellを勉強しています。
0504デフォルトの名無しさんNGNG
MLはとっつにくくないと思います。
C++なんかのほうがよっぽど難しいと思います。

難しいという印象がついているのは、関数型言語と世間との接点にいる人が
数学とかラムダ算法とか理論とか、そういう後光を知らずか知ってか、ちらつ
かせながら、良い言語ですよと言ってしまっている事に原因があると思う。
#強迫神経症のような括弧の嵐、人工知能用の難しい特殊言語という先入観の
#付いてしまったLISPも同様に不幸ですね。

実際、MLの基礎的なことは割とすぐにおぼえられると思います。
大学の講義でMLが使われているところのカリキュラムを見てもそれはわかります。

で、たぶん問題はそのあとで、色々なことをしてみようと思ったとたんに、
こういう時にはこういう風に組む、という情報が少ない。(本もソースも)
C言語などからの「発想転換」が必要なところはなおさら。
そして、ML風をやっと掴んできたところで、ライブラリが何も無いので、
覚えたけど使えない。中級者手前で脱落。

他の言語でできることができないなんて、とんでもないと思います。
Cでウインドウシステムを組むのだって、よく考えればかなり無理をしています。
それがわからないのはライブラリがあるからです。
ウインドウシステムやソケット、データベースなどを、なんらかの関数型に合っ
た流儀でつかえるようなライブラリがあったら、つかると思いますけどね。

検証はたしかにものすごい強みですが、そのためだけに不踏の大地たるML
に踏み込むコストと、検証に向かない言語を検証ツールでがんばって検証
することと比較してどうかと思います。検証がどうしても必要となるようなプロ
ジェクトではお金もかけられるだろうし。
普通に使えるようになったMLで検証が可能だったら人々は中毒になることでしょうが。
0505仕様書無しさんNGNG
MacOSXがもう少し安かったら、
開発用に使ってもいいんだけどな。
Webアプリ限定だけど。
0506デフォルトの名無しさんNGNG
要するにライブラリが無いことに文句が言いたいんでしょ?
「C++にはVisualC++があるのに、なんでMLには無いんだ!プンプン」
マイナーな言語何だから仕方ないだろというしかないですなあ。(ワラ
0507デフォルトの名無しさんNGNG
.NETもしくはmono
これで言い訳は通用しません。
ガチンコです。
0508デフォルトの名無しさんNGNG
別に各人使いたい言語使ってればいいだけの話で、
他言語との勝負などはム板の掃き溜めである
撲滅スレの住人がやってればよろしい。
まあ、.NETで色々できるようになるんなら良いことじゃないの?
0509デフォルトの名無しさんNGNG
.NET上の言語って単に各言語の特徴を無くして.NETに乗せてるだけなんだけど。
0510デフォルトの名無しさんNGNG
.NET批判じゃないよ。現実的な話
0511デフォルトの名無しさんNGNG
でも上に書いてあるプログラム検証という意味では
同じ土俵に乗ったといえるんじゃないの?
0512デフォルトの名無しさんNGNG
飛べる力があるのに、どうして飛ぼうとしない。
起きろ!
・・という真摯な内部批判だと思うので、言語の無駄論議といっしょにするのは
どうかと思われ。

.NETは全然解決じゃないですよ。
今だって、やろうと思えばウインドウシステムもつくれないことはない。
機能が無いのではありません。
そこに大地が無いのではなくて、どういうわけか未踏の大地のままなのです。
0513デフォルトの名無しさんNGNG
たぶん、こういうことじゃないかな。

同じようなこと、一度や二度感じたことのある人は沢山いると
思うんだ。実際、俺も思ったよ。でもって、ちょっと取り組ん
でみたこともある。

でも、実際にやりはじめてみると、CならCですでに実用化され
ている機能を「作り直す」という行為に終始することになるん
だよね。それって、ひどく退屈な上に、実りのなさそうな作業
なんだよね。

だったら、他の言語のライブラリにアクセスする仕組みや、別
のプロセスと通信する仕組みがあればいいってことになりがち
なんだよ。で、そういう機能は関数型言語にもある場合が多い
わけ。

それに気付いた瞬間、萎えちゃうんだよね。
少なくとも俺は萎えた。

あるものを使えばいいじゃん、って思っちゃうんだよ。
だって、使えるんだから。
それがないとどうしても困るってもんじゃないとな。

……というのが、俺の体験談ね。
でも、それでも頑張ってみるのも良いかも知れない。
SML/NJあたりだと、しばらくSML'97が健在っぽいし、日本語で
読める文献もあるわけだし、ライブラリを作ると、使ってくれる
人もいるかも、だしな。
0514デフォルトの名無しさんNGNG
>>513
出来たライブラリの使い勝手が C と大して変わらないとかなら
あまり欲しくないよね。
でも関数型言語用なわけだし、抽象度が高く柔軟に使えるようなものなら
作る価値があるような気がするし、
そういう方向性で作るならあなたの云うようにならなかったりしないのかな?
0515デフォルトの名無しさんNGNG
>>514
我輩Haskellはたしなまむのではっきりとはわからないが、
Haskelの公式サイトの
http://haskell.org/libraries/#guigs
を見てください。

>>513 の言っているのは、GTKをまんまくっつけただけなどの「望ましくな
い、抽象度の低い」ライブラリに相当すると思います。
オブジェクト指向のそれのように、関数型に即した抽象化の行われたライブ
ラリがあってしかるべきだと思います。

すでにあるじゃない、という意見なら未来永劫Cを使うということになりませ
んか?なんか、ダメなCOBOL使いの意見みたいです。
リナックスとかリナックスのウインドウシステム作ってる人みたいに、
作ること自体をたのしんでできないかな、とも思うし。


ただ、問題なのは「関数型のための抽象化」の良い案が凡人には思いつか
ないということでしょう。
どこかの研究者か天才プログラマーか、思いついてプロジェクトを始めて
欲しいなと。
0516514NGNG
まー、みなさんの言うことはおっしゃるとおりなんですが。

俺もチャレンジしないと言ってるんじゃなくって、過去の挫
折体験をカミングアウトしただけなんだけどなー。
0517デフォルトの名無しさんNGNG
>>516は>>513だよね?
ついでに age
0518デフォルトの名無しさんNGNG
Haskell少々Schemeサパーリな人間の質問です。
Schemeでcurry化って概念はあるのでしょうか?

たとえば、リストの先頭要素とそれ以降のリストの要素の大小を比較し、
小さい要素だけのリストを返す関数を、Schemeのfilter関数(非標準?)を
用いて実現したいわけです。
ちなみに、Haskellなら以下のようになります。

lessThan :: (Num a, Ord a) => a -> a -> Bool
lessThan a b
| a > b = True
| otherwise = False

lessList :: (Num a, Ord a) => [a] -> [a]
lessList ls = filter (lessThan (head ls)) ls

これをSchemeで書くとき、filter関数の(a -> Bool)部分をどう書けば
美しくまとめることができるのか、少々悩んでいます。
filter関数を使わなければ簡単なんですけど、どうせなら使いたい。
0519デフォルトの名無しさんNGNG
>>518
Scheme少々Haskellサパーリな人間の回答です。

curry 化というのはわからないけど
リストの先頭要素とそれ以降のリストの要素の大小を比較し、
小さい要素だけのリストを返す関数は以下のように書けます。

(define (rm-if-not p lst)
 ;; Common-Lisp の remove-if-not 相当
 (let loop ((lst lst) (r '()))
  (if (null? lst) (reverse r)
    (loop (cdr lst) (if (p (car lst)) (cons (car lst) r) r)))))
(define (less-list lst)
 (rm-if-not (lambda (x) (< x (car lst))) (cdr lst)))

(less-list '(4 3 5 2 4 6 3))
 ==> (3 2 3)
0520518NGNG
>>519 さん
ありがとうございます。
ちなみにcurry化というのは…正確な定義は忘れてしまいました。

lessThan :: (Num a, Ord a) => a -> a -> Bool
これが型の定義なのですが、 a -> a -> Bool が引数と返り値に相当します。
aに相当する数字二つを引数とするとBoolが返るのはOKとして、
もし引数が一つだけだとしたら、上の定義は右結合なので、
a -> (a -> Bool) となり、aを入力したらBoolが返る式が返り値になる、
というのがcurry化です。
Haskellでのfilter関数の定義が,
filter :: (a -> Bool) -> [a] -> [a]
のように、最初に評価式を必要とするので、curry化を用いると
具合が良かったわけです。
詳しい説明がsampou.orgにあったはずですが、これまた忘れてしまいました…。
0521デフォルトの名無しさんNGNG
>>520
(define (less-than a b)
 (if (a > b) #t #f))

(less-than 4) ==> Error: 引数が足らん

となるのでそういうことはできない気がします。
Scheme だと

(lambda (x) (less-than 4 x))

みたいにその場で名前なしの手続きを
つくるのが普通じゃないかな?
0522デフォルトの名無しさんNGNG
>>521
ごめん間違えた
(define (less-than a b)
 (if (> a b) #t #f))

強引に curry っぽいことはできるけど普通に呼ぶときに
面倒になるね

(define (less-than a)
 (lambda (b)
  (if (> a b) #t #f)))

((less-than 4) 1)
 => #t
0523デフォルトの名無しさんNGNG
全部一変数引数の関数にしておくのね。

#教科書に載ってた、true, false, if-then-else, inc, dec, 自然数,…を表すλ式を
#scheme処理系に入力して遊んだときのことを思い出したよ。
0524518NGNG
こうすべきだった。 lessList (l:ls) = filter (lessThan l) ls
0525518NGNG
最初に書いたやつだと先頭要素同士を
比較しちゃうからですね。
空リスト以外はコロン使った方が好みです。

#もばいるしてたら電車逃した(w
0526デフォルトの名無しさんNGNG
>>518
lessThan の定義ってこれじゃいかんのですか?
lessThan :: (Num a, Ord a) => a -> a -> Bool
lessThan a b = a > b
そもそも定義しなくても
lessList (l:ls) = filter (l >) ls
でいいんじゃないのですか?
0527518NGNG
>>526
それで十分なんですよね。
電車に乗ってから気がつきました。
まぁ、Schemeでcurry化ってあるの?という疑問から
色々迷走してしまったということで許してください。
0528デフォルトの名無しさんNGNG
Clean 使ってる人いる?
やっぱ、スレなんて立てたら即過去スレ逝きですかね?(w
0529528NGNG
過去スレじゃなく過去ログだよ…
使ってる人いないのかな…
0530ageNGNG
ついでに。
http://members.tripod.co.jp/nbz/ref/lambda.html
0531デフォルトの名無しさんNGNG
>>530
此の範囲だと、正に Lisp だね。
括弧を補うと直ぐに分かる(w
0532デフォルトの名無しさんNGNG
lambda age
http://wwwfun.kurims.kyoto-u.ac.jp/MtLambda.html
0533595NGNG
ff
0534デフォルトの名無しさんNGNG
関数型言語を記事にしたような雑誌はなんでないんでしょうか?
というかプログラミング雑誌らしいものがCマガしかない現状は
ちと恥かしいです。他はライブラリの使い方とかそんなんばっかだし。

どうでしょうか?
2chでもおれのようなDQNが関心もつぐらいだからある程度は売れると
思うんだけど。
0535保守ageNGNG
実際には使用人口それ程多くないだろう
やっぱり雑誌になるのは、C/C++、Java、VB、
かろうじてC#、Pascalだろう。
0536デフォルトの名無しさんkNGNG
DDJみたいな雑誌があってもいいかなと。
bitが潰れたぐらいだから半分趣味、半分学術
なんていう雑誌は売れないのかな?
0537デフォルトの名無しさんkNGNG
ごめん、文章メチャクチャ
0538デフォルトの名無しさんNGNG
>>534
> 2chでもおれのようなDQNが関心もつぐらいだからある程度は売れると
> 思うんだけど。
2chだからこそこれ程盛り上がって、それでわたしや貴方のようなDQN(?)が興味を持つようになるんだと思う。
0539デフォルトの名無しさんNGNG
http://www.dcs.gla.ac.uk/jfp/
0540デフォルトの名無しさんNGNG
>>539
素晴らしいです!
ありがとうございます。
0541デフォルトの名無しさんNGNG
>>518-527
scheamでもカリー化みたいなことは、できるみたいです。
クロージャを使ってね。

ttp://srfi.schemers.org/srfi-26/srfi-26.html
0542デフォルトの名無しさんNGNG
>>541
Haskell とかのやつより柔軟そうですね。
0543デフォルトの名無しさんNGNG
プログラミング言語における「型」ってなんなんでしょうか?
ラッセルの理論からもらってきた概念という知識しかありません。
(これすらも間違ってるかもw)

こういった疑問を解消するためにはどんな勉強をしたらいいのでしょうか?
数学的な理論も必要かもしれませんが、抽象的な話は理解に時間がかかるので
実際に使われている言語を使って説明したような本あれば嬉しいです。
よろしくお願いします。
0544デフォルトの名無しさんNGNG
>>543
MLの教科書でいいんじゃない?
あるいは、もうちょっとformalなほうが良ければ
http://www.cis.upenn.edu/~bcpierce/tapl/index.html
とか。
> The approach is pragmatic and operational;
> each new concept is motivated by programming examples
> and the more theoretical sections are driven by the needs of implementations.
なので、そんなに「抽象的」じゃないし。
0545デフォルトの名無しさんNGNG
>>543
昔読んだ「データ型序説」って本はよかったよ。
■ このスレッドは過去ログ倉庫に格納されています