トップページ⇒tech
976コメント334KB

関数型プログラミング言語ML

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
関数型言語ML(SML/Caml/Ocamlなど)についてのスレッドです。
MLは比較的学びやすく、関数型言語を学んでみたい人にもお奨めです。

MLの魅力に取りつかれた人も、MLをこれから学ぶ人もどうぞ。


参考:リンク集
http://www.gin.or.jp/users/daikoku/lang/func/ml.htm
0002デフォルトの名無しさんNGNG
すでにスレ立ってますよ。

http://pc.2ch.net/test/read.cgi/tech/1002111468/l50
0003デフォルトの名無しさんNGNG
>>2
1じゃないけどあっちはネタスレ化してるからダメだろ
0004デフォルトの名無しさんNGNG
>>2
あ、ほんとだ。
ごめんなさい。

・・・でも、そちらのスレは1の説明不足で、荒れ荒れになってますので、
こちらで再開した方がよろしいかと思いますが、いかがでしょう?
0005デフォルトの名無しさんNGNG
荒れるたびにスレたてんのか?
0006デフォルトの名無しさんNGNG
ネタすれになってるってなんで??
0007デフォルトの名無しさんNGNG
>>6
Meta-Language、と書いただけでスレをスタートしたので、
だれも何のことかわからなかったらしい。
0008デフォルトの名無しさんNGNG
>4
0009デフォルトの名無しさんNGNG
こっちのスレの方が荒れてる・・・
よってこっち終了w

MLスレ使い切ってもまだこっちがdat落ちしてなかったら
こっちを使おう!
0010デフォルトの名無しさんNGNG
大堀さんの本はいいよ! 日本語の本ならこれを読むべし.

アスキーから翻訳がでているUllmanの本は内容もだめ(大御所だけど
関数型プログラミングについてはわかってないね)だけど訳もだめ.

まあ,まともにやってる人はみんなPaulsonくらい読んでるよね?
0011デフォルトの名無しさんNGNG
>>10
大堀先生は良い人だ。
00122NGNG
>>4
向こうのスレでも結構まともな議論がされてるように見えるのだが。
荒れてるといっても一部のレスがアレなだけだし。

まあ、こっちでやってもいいのでしょうけど
その場合は、向こうのスレにその旨を書き、
こちらへの誘導リンクを貼っておくべきかと。
0013デフォルトの名無しさんNGNG
>>10
>アスキーから翻訳がでているUllmanの本は内容もだめ

買っちゃってるよ・・
0014デフォルトの名無しさんNGNG
Ml for the Working Programmer
by Lawrence C. Paulson
http://www.amazon.com/exec/obidos/ASIN/052156543X/
0015デフォルトの名無しさんNGNG
>>10
たしかに Ullman の本の内容の薄さはやばい。
0016デフォルトの名無しさんNGNG
>>12
勝手ながら誘導リンクを張っておきます。
MLしらないひとにもMLやって欲しいので。
(>>1のリンクは役に立つと思うので・・)
0017デフォルトの名無しさんNGNG
>>15
確かに読んだ後、MLって割と簡単だな、とは思ったんですけど・・
0018デフォルトの名無しさんNGNG
以前某J*ISTでの授業でやりましたが、担当の先生はUllmanの本を教科書
に指定しながらほとんど参照しませんでした。それなら買わせるなよなあ…
0019デフォルトの名無しさんNGNG
大黒さんの初級ML講座はいつまでアルファテスト中なんでしょうか?
0020デフォルトの名無しさんNGNG
かいじ〜んの書いてるML入門サイトには良さそうなのがあるな。
英語だから、よさ「そう」、って感じだが。
0021デフォルトの名無しさんNGNG
大黒さんの初級ML講座はHTML版とかも作った方がいいような。
0022デフォルトの名無しさんNGNG
Haskellに比べると、ずいぶんと楽かも。
0023デフォルトの名無しさんNGNG
SML97になって,value polymorphismの制限がかかってちょっと使いづらく
なった.例えば
    fun id x = x
と定義しておいて
    val id' = id id
とするとエラーになる(SML90ではちゃんと定義できる).同様に
    fun curry f x y = f (x, y)
    fun twice (f, x) = f (f x)
と定義して
    val ctwice = curry twice
とするのもだめ.

うーむ.
0024デフォルトの名無しさんNGNG
大堀はねぇ
MLに密着しすぎ(w
0025デフォルトの名無しさんNGNG
>>23
う〜ん、
かくなる制限はなぜに設けられたのでしょう?
なにか良いことでもあるのかな?

ML使ってるだけで、背後の理論を知らないので理由がわからぬ。
002618NGNG
>>23
講義でやった記憶はあるのですが説明できません。(_ _)
0027デフォルトの名無しさんNGNG
ghcコンパイル劇悪阻
0028デフォルトの名無しさんNGNG
>>23
何がどう制限されたのか、はっきりとわからない(泣
MLはまだまだだ・・
0029デフォルトの名無しさんNGNG
前スレの凄い人が戻ってきてくれることを切に願う
0030デフォルトの名無しさんNGNG
>>25
ポリモルフィズムと破壊的代入が相容れないからです。
もし制限が無いと例えば

let val f = ref (fn x => x) in f := fn x => x + 1; !f "abc" end

が型チェックを通ってしまう。しかしこれを実行したら整数を取る関数に文字
列が渡され、まずい。

ということで、これを回避するための制限がvalue polymorphismです。この制
限により上の例だとfは単相型しか持てなくなり、let本体で型エラーが起きる
ので、上の例は無事弾かれます。
0031デフォルトの名無しさんNGNG
>>30
Haskell使いが聞いたら喜びそうな話だ。
0032デフォルトの名無しさんNGNG
OCAMLって使っている人居ます?
あれってありですか?
関数型でなおかつオブジェクティブっていうのは素敵に思える反面、
じつは殺しあっていてどっちでもないという結末も想像できます。
0033デフォルトの名無しさんNGNG
>>32
なぜそう想像するの?
0034デフォルトの名無しさんNGNG
>>33
関数型と、オブジェクトって相性わるそうじゃない。
それに、すんなり兼ねそなえられるなら、なぜに他の言語がそうでない?
だから無理してるのでは?
そうおもったわけ。
0035デフォルトの名無しさんNGNG
お前等芋才
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 関数型言語
0036デフォルトの名無しさんNGNG
大堀先生の本で勉強しています。仕事(計算機とは無縁)が忙しくて
なかなか勉強がはかどりません。専門に勉強できる学生さんがうらやましい。
最初にSMLに出会ったのはMLWorksでした。
竹内関数を実行して、そのスピードにびっくりしました。
もともとSchemeが好きでしたから、型がきっちりしているのに最初は抵抗が
ありました。しかし、今ではSMLの方が気に入っています。そして、Prologのような
パターンが使えること、モジュールが使えることなど、今まで接してきた正格な
言語では最強ではないかと思います。
再帰は強力な思考方法なので、それを活かせる言語という点でもSMLは良い言語だと
思います。
0037デフォルトの名無しさんNGNG
>>34
オブジェクトを入れると型システムや型推論がややこしくなるからねぇ。
Ocamlはよくやっている。

しかしたまに複雑な型システム故の理解困難な型エラーに悩まされる、時もあるが...
0038デフォルトの名無しさんNGNG
Ullmanさんの本は内容が薄いということが言われているようですが、
関数プログラミングになじみがない方にとっては、とっつきやすい本だと思います。
この本で入門を果たした後に、Paulsonさんや、大堀先生の本に取り組めばと思います。
0039デフォルトの名無しさんNGNG
SMLで無限リストが扱えないものでしょうか。
(大堀先生の本でもちょっと解説されていましたが)
以前、武市先生の関数プログラミングの本でラマヌジャン数を求める
MirandaかHaskellのコードが書かれた本があって気にかかっていました。
0040デフォルトの名無しさんNGNG
>>7
Meta-Languageでわからない奴(アホ)はこっち。
わかる人はあっち。
0041デフォルトの名無しさんNGNG
ここがHaskell挫折者の集いの会場ですか?
0042デフォルトの名無しさんNGNG
age
0043デフォルトの名無しさんNGNG
Haskellのほうが簡単ぽいのでHaskellに浮気します・・
無念。
0044デフォルトの名無しさんNGNG
>>39
datatype 'a inflist = Nil | Cons of 'a * (unit -> 'a inflist)
じゃだめ? (無限というよりは遅延リストだが)
0045デフォルトの名無しさんNGNG
>>44
普通に、
(unit -> 'a inflist) を呼んだのとあまり違いがないようにも思えますが・・
0046デフォルトの名無しさんNGNG
44を使ったプログラムは例えば
fun nat n = Cons (n, fn () => nat (n + 1))
とか(nat 0 = [0, 1, 2, 3, ...])
fun filter p l =
case l of
Nil => Nil
| Cons (hd, tl) =>
if p hd then Cons (hd, fn () => filter p (tl ()))
else filter p (tl ())
とか(リストlをpでフィルターする)。これでいけると思ったんだけど...

>>45
>普通に、(unit -> 'a inflist) を呼んだ

??? 45流だとどうなるの?
004739NGNG
レス、ありがとうございます。
大堀先生の本でも同様に定義されていて、
以下p104より引用
datatype 'a inflist = NIL|CONS of 'a * (unit -> 'a inflist)
引用終わり
本を読んで、SMLでも無限リストが使えるのか、こいつはすごいと思ったものの
意味がよくわからずに深く読んでいませんでした。正格言語では無限リストの表現
は難しくなってしまうのでしょうか。「関数プログラミング」バード&ワドラーでは
では簡潔な表記になっているのですが。
0048デフォルトの名無しさんNGNG
>>47
そんなことできるんですね。
Ullmanの本と違ってそんなことも書かれているんですね。
無限リストはLazyを拡張したMLだけが使えるものだと思っていました。
大堀先生の本は読むべきかも。
0049デフォルトの名無しさんNGNG
>じゃだめ? (無限というよりは遅延リストだが)
無限の実装は遅延objectですが何か?
0050デフォルトの名無しさんNGNG
あげ
0051デフォルトの名無しさんNGNG
>>50
あがってないよ大将!
といいつつ折れもsage
0052デフォルトの名無しさんNGNG
MLをほんとに理解しようとするとラムダ計算をいずれは理解しないとって思っています。
以前、人に薦められて「プログラム意味論」(横内寛文 著)を購入しました。
第2章がそれですが、独学ではきびしいです。
「関数プログラミング」(萩谷昌己 著)あたりならなんとかかんとかです。
チャーチってコンピューター出現以前に何を夢見ていたのでしょうね? 
0053デフォルトの名無しさんNGNG
>>52
lispやschemeのlambdaはほぼ直感的にわかったけど、
MLとかはそんなに難しいものなの?
0054デフォルトの名無しさんNGNG
関数プログラミングの歴史については
「特集 いま欲しいブレークスルー 関数プログラミング」(武市正人)Bit1999,3
に概略が記述されています。
それにしてもBit休刊は悔やまれます。
0055デフォルトの名無しさんNGNG
>>53
lambda とかの無名関数のことでなく
λ計算というモデルの話だと思われ。
005652NGNG
>>53
私はちゃんと学校で教わったわけではないのですが、、、。
SchemeにしろSMLにしろ関数プログラミングの根底にあるものはラムダ計算
理論と思います。そして、それはチューリング機械やゲーデルの不完全性定理
とも関連がある記憶しています。
この辺り現役で専門教育を受けている人に解説をお願いしたいところです。
0057デフォルトの名無しさんNGNG
>52
なんでこういう頭の硬い人が多いのかなあ・・・
005852NGNG
もちろん、MLでプログラムを書くのにラムダ理論はとりあえずは必要
ないと思います。(現に私はよくわかっていません。)
せっかく、MLに興味をもった人を遠ざけてしまってはいけないので、、、。
武市先生もBitの特集で言っています。
引用開始
「しかし、関数プログラミングの悲哀もまた、ここにあるのかも知れない。
関数プログラミングといえば、ラムダ計算法が顔を出すので、それとはなしに
プログラミングに興味のあるプログラマを遠ざけてしまったのではなかろうか。、、、」
引用終わり
0059デフォルトの名無しさんNGNG
MLのソースが落ちてるところってどこかないでしょうか。
Haskellだと公式サイトにいろんなライブらいなどが紹介されていますが、
MLにそのようなものはないのでしょうか。
偉人のソースを読まないと理解は進まないと思うので。


また、MLで(ML流に)GUIのアプリをつくろうという試みとかライブラリはない
のでしょうか。GUIにかぎらずデータベースアクセスなど実用的なものについて。

普及している言語を学ぶと、最初の方に、表示やファイル操作など
「結果として成果を得る」ことや、実際に動くシステムをつくるコツなど具体的な
成果物を得ようとするトピックが必ずありますが、
関数型言語の本ではそういうものはあまり扱われていない傾向があると思います。
内部的な計算は非常に楽しく出来て、じっさい他の言語を使っていても
高階関数があればなあ、とおもったりするようになったりしましたが、
MLに戻ってくるとあまりに計算しか出来ないので悲しくなります。

MLを作っている人って、コンパイラと言語設計だけしか頭にないのでしょうか。
極端な話VBのように「実用に配慮した」りすることには全く興味はないのでしょうか。
なんか、結局他の言語の将来のこやしにしかなっていない気がしてなりません。
0060デフォルトの名無しさんNGNG
>58
MLの場合は単純に「何のひねりも無い名前」がかなり影響してるかと。
メーリングリストとかぶってるし(w
0061デフォルトの名無しさんNGNG
ML.NETって企画があった様な。
0062デフォルトの名無しさんNGNG
>>59
VBが実用的かどうかはともかく、
>>61
ML.NETって激しく勘違いされそうな企画ではあるな(w
0063デフォルトの名無しさんNGNG
>>59
MLでも「実際に動くシステム」はいくらでも作れるし,実際作られてるんですが.
GUIはあればあったでいいんでしょうが,なくても困るものではないし.

「他の言語の将来のこやし」というのはいいですね.確かにMLやその周辺の研究
成果はいろいろな言語の設計・実装にかなり活かされています.VBやPerl,Tcl
みたいに(少なくとも設計レベルでは)全くそういうものを活かしていない言語
が幅をきかせているのは残念ではありますが.
0064デフォルトの名無しさんNGNG
実際に動くってどういうこと? >>59
どんなプログラムでも仕様通りに動くんだったらそういっていいのでは?
  fun fact x = if x=0 then 1 else x*fact(x-1)
だって「x が(x!がMLで扱える整数値を超えないような)非負整数のときに
fact x はx!を与える」という仕様に従ってるわけだし。
0065デフォルトの名無しさんNGNG
>>59
大堀先生の本の後半には実際的なプログラムの例も掲載されていますよ。

GUIについては、他のDelphiなどの言語に任せて、MLは頭脳部分にするという
方法はどうですか。うろ覚えなんですが、AMZI!Prologはそんなアプローチ
だったように思います。
http://www.amzi.com/

MLってどんな用途に使われているんでしょうね。学校での理論的な勉強、研究
はもちろんなのでしょうが、その厳格な型チェックは医療用プログラム、宇宙開発
などシビアーな用途に向いているように思えますが。
0066デフォルトの名無しさんNGNG
私自身は計算機とは無縁な仕事についているのですが、計算機を利用はして
いるんですね。それで、その開発部隊にいたという若い人がDelphiでの開発
にあたっていたというので、先日プログラムの話で大いに盛り上がりました。
彼に大堀先生の本を見せてあげたのですが、ピンとこないようでした。
再帰の話をしても、普通はそれは使いませんよね、、てな調子でして。
まあ、それで、MLに関心のあるプログラマーの人というのは研究熱心な方
なんだろうな〜と。
まとまりのない話で恐縮です。
0067デフォルトの名無しさんNGNG
>>66
>彼に大堀先生の本を見せてあげたのですが、ピンとこないようでした。
>再帰の話をしても、普通はそれは使いませんよね、、てな調子でして。
なんたる!
それは従来の言語のパラダイムに囚われて損をしているです。

なぜ関数プログラミングは重要か
http://www.sampou.org/haskell/article/whyfp.html

とか

Scheme(LISP)のページですけどここを読めば関数型での再帰の扱いについて
書いています。普通の言語だったら再帰はメモリ食いで良くない、
とされているんですが(じつはそれも怪しいのだが)
http://www.shiro.dreamhost.com/scheme/index-j.html の
なんでも再帰 (06/10/2001)
Schemeプログラムに氾濫する再帰に戸惑うCプログラマへ。 これであなたも再帰使い。


あと、関数型と言うと、理論のラムダ計算を思い浮かべて引く人も誤解です。
使いこなすためにマストな知識ではありません。(知っていた方が良いとは思いますが)
0068デフォルトの名無しさんNGNG
>>65
>GUIについては、他のDelphiなどの言語に任せて、MLは頭脳部分にするという
私はMLで全部書きたいです。
他の言語と組み合わせて使うとしても、連携のための手段が少ない。

GUIが書けないと、一般に広く使われないんじゃないかと思うのです。
ML Builderなんかがあるくらいが・・

先ほど気がついたのですが、
Libraries and Tools For Haskell http://haskell.org/libraries/
Haskellならこんなにいろんなものがそろってるようです。
MLのほうが実用的だと思ってるのですが、せめてこれがMLにあればなあと思います。
0069デフォルトの名無しさんNGNG
>>65
>シビアーな用途

シビアーな用途といえば、MLではプログラムの検証(Verification)はどうなってい
るのでしょう?
Javaですと、配列の範囲外アクセスがないということを事前検証できますよね、確か。
0070デフォルトの名無しさんNGNG
>>65
>シビアーな用途
噂によると、Adaは、コンパイルをちゃんと通ったプログラムは落ちないようになっているのだとか。
>>68
http://www.google.co.jp/search?hl=ja&q=SML+gtk&btnG=Google+%8C%9F%8D%F5&lr=
GTKならあるみたいですけど。
>>63
WindowsではGUIはほとんど必須のようなものでは?
UNIXでは無くても良いのですけど。
0071デフォルトの名無しさんNGNG
>>69
>Javaですと、配列の範囲外アクセスがないということを事前検証できますよね
exceptionは拾えるけど、事前検証なんてむりなんじゃ・・・
0072デフォルトの名無しさんNGNG
誰か ML で書かれたソースが落ちてるところを>>59に教えてやれよ。
0073デフォルトの名無しさんNGNG
>>69 >>71
配列の範囲外アクセスについての事前検証はさすがにやってませんよ.特別な
場合を除いてこれをやるのは非常に難しいでしょうね.

MLはもともと検証(支援)系を作るためにできた言語なので,MLで作られた
検証(支援)系はたくさんあります.プログラム検証にも使われていますよ.
0074デフォルトの名無しさんNGNG
>>73
MLのソースをVerificationできる方法ってありますか?
やってみたくなりました。
もしよろしければ。
0075デフォルトの名無しさんNGNG
>>74
ええと,どういう性質について検証(verification)するのでしょうか?
型の整合性ならコンパイラがやってますが.
0076デフォルトの名無しさんNGNG
>>75
検証に関しては厨房です、すみません。

そうですね、何ができるか解りませんが(アフォなことをかいたらすみません)
・このプログラムは有限時間内にかならず応答する。(時相理論のEventuallyみたいな)
・このプログラムのメモリ消費はかならず有限であり、ある一定地を超えない
・プロセスAとプロセスBは排他資源XYに関してデッドロックを起こさない。

・・・期待し過ぎですか?
0077デフォルトの名無しさんNGNG
>>67
lisp素人なんでよくわからんけど、
そこのページ(なんでも再帰のほう)の
> 開かれたループ
に載ってる例で
> (define (count-words user-char user-proc)
ってしておいて
> (else (count-words (read-char) count))))
ってのはどういうこと?
0078デフォルトの名無しさんNGNG
>>77
(define (count-words user-char user-proc) ... )
は、
(define count-words
 (lambda (user-char user-proc) ... ))
のシンタックスシュガーです、という風な事かな。
0079デフォルトの名無しさんNGNG
>>52

背景となる理論があるというのは関数型言語のセールスポイントの一つだと思っ
てます。ラムダ計算はScheme, ML, Haskellなどの非常に単純化された模型(モ
デル) なのです。そういう模型があると:

* 模型の中でプログラムがどう動くかを(リダクションとかで)手で確かめることができる
* 模型の中でプログラムに関して推論できる(2つのプログラムが等しいとか)
* 言語を拡張したら何が起こるかを、模型を使って確かめることができる
* 模型の定義は厳密で、また実際の言語の仕様よりもはるかに小さいので
だれでも同一の模型を共有できる

と、いろいろうれしいことがあるわけです。
物理理論には数学的モデルが存在するように(電磁気学にはMaxwellの方程式、とか)、
プログラミング言語にもあったっていいじゃないですか。
でもそういうのを想定せずに作られた言語の方が多い...
0080デフォルトの名無しさんNGNG
>>59
Ocaml(ぼそ
008177NGNG
>>78
考えてみたんですが、
単にバグという結論に達しました。
そもそもカッコの数あってないし(w
008252NGNG
>>79
レス、ありがとうございます。

プログラミングを始めた頃は理論なんか無視していました。
とりあえず、なんか動くものが作れて面白かったんですね。
その後、Schemeに出会いプログラミングと数学がコインの
表と裏のような関係にあることがわかり興味を持ちました。
ホフスタッターのGEBを読んだこともあって数学基礎論にも
興味を持ちました。
バード&ワドラーの「関数プログラミング」のカバーに書いて
あった次の言葉が気に入っています。
引用開始
関数プログラミングはプログラミングを数学的な活動として
とらえる考え方であり、、、、、」
引用終わり
0083デフォルトの名無しさんNGNG
>>68

OCamlであれば、
Labl/Gtk や、Labl/Tk、
LablGL など、GUIをかけるライブラリは揃ってますよ。
実際、他の言語で書くよりもコーディングが楽ですし。
0084デフォルトの名無しさんNGNG
>>83
少数派のMLの方言のCamlのさらに変種だから、敬遠してました。
いれてみよっと。

日本語通ります?
あと、ウインドウズやマック向けのアプリも書けます?
0085デフォルトの名無しさんNGNG
>>84
http://caml.inria.fr/ocaml/distrib.html
> ウインドウズやマック
一応、コンパイラならあります。GUIはGTKやtkなら。

# WindowsでGTKってどうなんでしょう、実際。
008683NGNG
>> 84
もちろん日本語は通ります。
EUCならば変数名にすらできます。
(そんな面倒なプログラミングはしないけど)

ちなみに、Camlを使ってる人はほとんどいないので、
OCamlのほうが多数派です。
ただ、OOなプログラミングをするかといわれると、
その部分は使わない方が多いようです。
また、プログラミング言語関係の理論の実装では、
SMLよりもOCamlを使った実装の方が多いですね。

ウィンドウズやマック向けのアプリに関しても、
85 のおっしゃるように、gtkやtkを使えば可能です。
ウィンドウズやマックで動くOCamlは、
ftp.inria.fr/lang/caml-light
で、配付されています。
(このディレクトリ名が気になりますが)

0087デフォルトの名無しさんNGNG
大堀先生の本をようやく手に入れました。
思いっきりTeX(笑

Ullmanの本を先に持っていて一通り読んでいたのですが、
どなたかが書かれていたとおり、あまりに内容の分量が違いました。

内容が多いだけではなくて、説明が固いので(論文のような文体です)
大堀先生の本で全くの初めての人が挑戦したら、挫折するのでは
ないだろうかとも思いました。
Ullmanの方が説明もゆっくりで、わかりやすい図もあり、なおかつ
出てくる例のプログラムのテーマが普通の人むけだともいます。

大堀先生の本、一冊すっかりこなすのは大変そうですが、
このスレに出てきた無限リストも乗ってますし、高度なプログラミン
グの例が結構乗っててなかなか良い感じです。
文法の説明だけではなく、ライブらいの使い方ものってたり、
文字列処理の具体的例がのってたり、
最後の章の実際に実用的なプログラムを一から作る例での説明
も良い感じですねえ。
一冊やりこなせば本当に使えるようになりますね、これ。
0088デフォルトの名無しさんNGNG
大堀先生の本結構難しいね。
苦労してる。

>>1のリンク先の説明の簡単な奴がなかったらもう挫折してると思う。
0089デフォルトの名無しさんNGNG
MLに初めて接する人のために文献の正式名称をあげときます。

「プログラミング言語ML」Jeffrey.D.Ullman 著 神林靖 訳
アスキー出版局 ISBN4-7561-1641-8

「プログラミング言語 StandardML入門」 大堀淳 著
共立出版 ISBN4-320-12024-8

「ML for the working programmer」L.C.Paulson
Cambridge University Press ISBN0-521-56543-X

「The Little MLer」Matthias Felleisen, Daniel P.Friedman
The MIT Press ISBN

「関数プログラミング」R.バード、P.ワドラー 共著
武市正人訳 近代科学社 ISBN4-7649-0181-1

「関数プログラミング」 萩谷 昌己 著 日本評論社
ISBN4-535-60817-2

「プログラム意味論」 横内寛文 著 共立出版
ISBN4-320-02657-8

0090デフォルトの名無しさんNGNG
SMLを始めようとする人のためのエディター関係情報です。

SML/NJはコンソールアプリなので、素のままだと編集が大変です。
Emacsのようなコンソールアプリを起動する機能をもったものを
通常使っているようです。「1」のリンク先にあります。
Windowsの場合、他にXyzzyがあります。
また、Windowsの場合SML専用のものにMLEdit(1のリンク先にあり)
があります。こちらは、コンパクトなので宿題を解いたりするのに便利かも。


0091デフォルトの名無しさんNGNG
「コンソールアプリ」って一瞬何のことかと思ったよ.
激しく萎える言葉
0092デフォルトの名無しさんNGNG
ワラタ
0093デフォルトの名無しさんNGNG
なんで ML スレって盛り上がらないのだろう?
0094デフォルトの名無しさんNGNG
なんで盛り上がると思うんだ?
93はCマガかSoftwareDesignででも連載してみせろ。
0095デフォルトの名無しさんNGNG
2チャネラーの認識だと
「Haskelの方が逝けてる」(どうせ見得でやるだけならHaskelにしとこ)

逝っちゃってるRubyの人気がむちゃ悪いのと、似てますね。
0096デフォルトの名無しさんNGNG
>>93
住民が少ないから。
総勢10人ぐらいじゃないの?(藁
0097デフォルトの名無しさんNGNG
>95
見栄ですか…
0098デフォルトの名無しさんNGNG
>>95
だから、HaskellのLは2つだと口を酸っぱくして言ってるだろうが!!
MLのLが足りないとMだぞ! それでもいいのか!?
0099デフォルトの名無しさんNGNG
>>98
warata
0100デフォルトの名無しさんNGNG
Haskellの方が「背伸びしたい厨房」を引き寄せる何かがあるみたいですね。

なにしろ山形・・・・・
0101OOマンセーNGNG
関数型言語には「背伸びしたい厨房」を引き寄せるなにかがあるみたいですね。

なにしろ全角英数・・・・・
■ このスレッドは過去ログ倉庫に格納されています