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

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

ML!!!!!!

1 :あなたの近くの名無しさん:01/10/03 21:17
Meta-Languageについて語って下さい。
この掲示板の人なら知ってるかなと…
な〜んてね

154 :デフォルトの名無しさん:01/11/08 08:31
>>151
それはちょっと違うでしょ。
listじゃなくてconsを使ったのと同等じゃん。

155 :デフォルトの名無しさん:01/11/08 09:22
>>154
そうする以外に出来ないのがMLの流儀でしょ。
MLのlistは、S式のように型が弱くない。プログラムの安全性を保障するために。
S式はリストと木のあいの子だから。実装=木、仕様=木&リスト

156 :デフォルトの名無しさん:01/11/08 14:43
S式の型が弱いってのがわからない。

datatype Sexp = Cons of (Sexp * Sexp) | Symbol of string |
      Number of int | ...

みたいなvariant型だろ? これだって安全だと思うが。

157 :デフォルトの名無しさん:01/11/08 17:58
>>153
まあ、自分で木構造作れば出来るんだから、MLが非力っってことはない。
静的なくせにかなり柔軟な言語だよMLは。

158 :デフォルトの名無しさん:01/11/08 23:43
個人で改造ができそうな小さいMLってないですか?

159 :デフォルトの名無しさん:01/11/09 04:25
>>158
MLでMLの処理系書いてみるよろし。

160 : :01/11/11 16:01
>>146

'a list ->'b list じゃ駄目だよ。
それだと例えば (1 + flat [1,2,3]) がOKになっちゃう。

これは155や157みたいに少し構造を複雑にしないと
出来ないと思う。

161 :160:01/11/11 16:03
間違えやした

例は (hd flat['a'] + 1) にしてください。

162 :デフォルトの名無しさん:01/11/14 01:01
>>156
> S式の型が弱いってのがわからない。

(int list) list, int list, etc.をまとめて一つの構造で扱うので、
"int list"として扱うxに対して、head (head x)がcompile時にerrorとならない。
これはデータの持つ特徴を、型にabstractし損なっている、ということになる。

もちろん、>>156の様でないといけない局面では「弱い」とは言えないし、
Lispは、この柔軟さを構文の柔軟さとし、武器とした。

163 :デフォルトの名無しさん:01/11/20 23:17
良スレage

164 :デフォルトの名無しさん :01/12/07 11:43
mltonってどうよ

165 :デフォルトの名無しさん:01/12/07 14:32
ML2000はいつになったら、出来るんだろう。かなり興味あるんだけど。

166 :デフォルトの名無しさん:01/12/28 12:03
大納会アゲ

167 :デフォルトの名無しさん:01/12/28 12:06
大学でMLで演習やってるとこある?

168 :デフォルトの名無しさん:01/12/28 17:34
http://www.google.com/search?q=cache:XXbn3TAAsWk:saitolab.tamacc.chuo-u.ac.jp/WWW/lecture/gakuin/syodoku/chap11.html+site:ac.jp+Meta+Language&hl=ja

169 :デフォルトの名無しさん:01/12/28 18:04
ほほう。

170 :デフォルトの名無しさん:01/12/28 18:18
htmlはMarkup Language で Programming Language ではないから、あっち(どっち?)ではMetaなんだろう。たぶん。

171 :デフォルトの名無しさん:02/01/04 14:09
大発会アゲ

172 :デフォルトの名無しさん:02/01/07 12:49
大発会アゲ

173 :デフォルトの名無しさん:02/01/07 15:34
Ocaml使っている人いる?
SML/NJより格段に速いそうだけどちょっとSyntaxが違うみたい。

174 :デフォルトの名無しさん :02/01/07 19:29
2chではMLってあんま人気ないけど、
実際はどんなもん?Haskellの翻訳本なんて
ないけどMLならある。でもここじゃHaskellだよね。
不思議・・

175 :デフォルトの名無しさん:02/01/07 23:46
129で紹介された悩める者です。flatの件は皆さんの書き込みを読んで納得でした。
非正格のHaskellも気にはなりますが、一番好きな言語はMLです。SMLは、やはり好きな言語のSchemeを強力にしたもののように思えるからです。
今は大堀先生の本を読んでいます。

176 :デフォルトの名無しさん:02/01/08 17:32
厳密に言えばSMLは関数型言語じゃないんだそうな。
でHaskellはそうだとか。
Side effectが無いかどうかなんだと。
Ocamlなんてさら脱線してるし。

でもHaskellは普及しないと思う。
Closureの機能をコンパイルするのはそれ程大変ではないが
Lazy evaluationのコンパイラは一般のプログラマには
理解しにくいだろうというのが一つの理由。

177 :デフォルトの名無しさん:02/01/08 17:34
MLはプログラム解析ソフトを書くのに結構使われてるよ。

178 :デフォルトの名無しさん:02/01/09 12:03

ocaml使ってます。syntaxは違いますが慣れました(ML -> Ocamlで入った)。
目立つ違いは宣言まわりかな? SMLのトップレヴェル宣言

val x = ...
fun f x = ...
fun f x = ...f...

はそれぞれOcamlでは

let x = ...
let f x = ...
let rec f x = ...f...

になります。定数と関数の宣言をどちらもletで行ないます。再帰関数の宣言
の時だけrecを入れる必要があります。Ocamlの局所宣言はletに続けてin (式)
とします。SMLのようにendで閉じる必要はありません。

あとdatatypeのコンストラクタは必ず大文字で始めるというのも最初は戸惑い
ました。

(SML) datatype 'a tree = leaf | node of 'a * 'a tree * 'a tree
(Ocaml) type 'a tree = Leaf | Node of 'a * 'a tree * 'a tree

他にもいろいろありますがとりあえず。

sxk@dcs.ed.ac.uk

179 :178:02/01/09 15:09
Σ(゚Д゚)・・・指がすべった・・・

180 :デフォルトの名無しさん:02/01/09 17:00
あの大学の理論研究者か・・・凄すぎ(;´Д`)

ニチャンテトキドキコウイウヒトイルカラコワイ

181 :デフォルトの名無しさん:02/01/09 17:02
アゲテシマタ!

ゴメンナサイ

182 :デフォルトの名無しさん:02/01/09 17:08
http://www.informatics.ed.ac.uk/people/students/Shin-ya_Katsumata.html

183 :デフォルトの名無しさん:02/01/09 17:13
>>180 ニチャンテトキドキコウイウヒトイルカラコワイ

禿胴 ...

184 :デフォルトの名無しさん:02/01/09 17:19
http://www.kaba.or.jp/~sinya/
http://www.kaba.or.jp/htbin/wwwfinger?person=sinya

こういう人を見ると自分のヘボさを実感します。

185 :デフォルトの名無しさん:02/01/09 19:12
>>1
な〜んてね

186 :デフォルトの名無しさん:02/01/09 19:20
>>185のレスが、わけわからんコワッ!

187 :178:02/01/09 22:57
navi2chのメッセージ入力画面がmhに似ていて
条件反射でやってしまった (´Д`) はぁー鬱

他にもOcamlにはオーバーロードが無いので
3 + 2, 3.0 +. 2.0 など区別して書きます。

実数を扱うプログラムを書く時など、ちょっと気になるかも...

188 :デフォルトの名無しさん:02/01/12 13:03
>>187
しかし=は未だオーバーロードされているようで。

189 :178:02/01/13 00:50
>>188
> しかし=は未だオーバーロードされているようで。

そうでした。>>187は言いすぎでした (鬱死
「+,-,/,*,符号反転といった演算子はオーバーロードされてない」と訂正します。

...反省すると、型システムはオーバーロードを考慮して作られていません、
ということが言いたかったのでした。

このためOcamlでは = や < などの比較演算に'a->'a->boolという型を持たせ
ることでオーバーロードを実現しています。こうすれば(整数) < (整数) と
(実数) < (実数) が同時に型チェックを通るのでよいのですが、一方で < が
未定義な引数が来てもそれを通してしまいます。例えば(fun x -> x) < (fun
x -> x) は実行できて、例外を発生します。この点、SMLでは型システムが <
の定義されている型を知っているのでこれを型エラーにします。

190 :デフォルトの名無しさん:02/01/13 11:20
質問いいですか?

ttp://a414s1.it.nanzan-u.ac.jp/smlbook/smlwww/node12.html
を見つつお勉強してるんですが、
ここに載ってる例の、
exception Get_nth;
fun get_nth _ nil = raise Get_nth
|get_nth 1 (front :: _) = front
|get_nth n (_ :: rest) = get_nth (n-1) rest;

val get_third = get_nth 3;
というのが、smlで
stdIn:7.1-7.22 Warning: type vars not generalized because of
value restriction are instantiated to dummy types (X1,X2,...)
val get_3 = fn : ?.X1 list -> ?.X1
と言われて動きません。

moscow ml だと
! Warning: Value polymorphism:
! Free type variable(s) at top level in value identifier get3
と言われつつも動くのですが。

なんでですか?

Standard ML of New Jersey v110.9.1 [FLINT v1.41], October 19, 1998
Moscow ML version 2.00 (June 2000)
NetBSD 1.5ZA
にて。

191 :デフォルトの名無しさん:02/01/13 13:45
整数とリストのタプルを要求しているのに整数を与えているから。

192 :190:02/01/13 14:00
s/get3/get_third/gでした。スマソ

>191は私に対する回答ですか?
タプルなんて出てこないと思うのですが...。
タプルって(a,b)みたいなやつですよね?

193 :デフォルトの名無しさん:02/01/13 14:52
>>190
折もわからんのだが、
fun get_third xs = get_nth 3 xs
ならうまくいくねぇ。どうしてなんだろ。

194 :デフォルトの名無しさん:02/01/13 16:17
>>190

部分適用で多相的な関数を宣言するのはSML97では無理じゃないかな?

val get_third' = (fn l => get_nth 3 l) とか、これに同値な宣言
fun get_third' l = get_nth 3 l

なら'a list->'aになりますが...というのは:

SML97にはvalue polymorphismというものが導入されました。これは、「宣言
val x = eのxが多相型を持つのはeがnon-expansiveな式であるときに限る」と
いうものです。

non-expansiveな式とはおおざっぱにいって定数、変数、関数抽象、
non-expansiveな式からなるタプルやレコード、そしてnon-expansiveな式が与
えられたコンストラクタ(refを除く)からなります。それ以外、例えば関数呼
び出しはnon-expansiveではありません。

>>190でWarningが出るのは、get_thirdの型を多相的にしようとしたところ、
get_nth 3がnon-expansiveな式ではなかったためです。一方冒頭の例では
non-expansiveな式でget_third'を宣言しているのでうまくいきます。

できなかった時にget_thirdの型がどうなるか、については省略します。ただ
し、SML/NJとMosmlでは扱いが微妙に異なるため>>190のように挙動が違います。

ちなみにMosmlでget_thirdを定義してget_third [1,2,3]を計算した後
get_thirdの型を見ると...

195 :デフォルトの名無しさん:02/01/13 16:33
>>194をはしょって言えば
「fun get_third xs = get_nth 3 xs が良くて
val get_third = get_nth 3 がだめなのは仕様です。」

196 :190:02/01/14 10:19
>>194-195
ありがとうございます。
元ネタのページのないようがSML97以前のものということでしょうか。
正直、よくわかりませんが、(w
勉強してみます。

197 :デフォルトの名無しさん:02/01/30 10:21
日経平均1万円割れ アゲ

198 :デフォルトの名無しさん:02/01/30 13:35
MAXミーナできちゃった婚おめでと、アゲ

199 :デフォルトの名無しさん:02/01/31 12:07
いろいろありまして、MLスレはお引越しです。

関数型プログラミング言語ML
http://pc.2ch.net/test/read.cgi/tech/1012445015/

以後はこちらで。



200 :200:02/01/31 12:48
200get!!!

そして、終了!!!!!!

201 :デフォルトの名無しさん:02/02/03 14:27
もっとこっちのスレで頑張るべきだ!

202 :デフォルトの名無しさん:02/02/03 17:01
凄い高レベルの人がいるから皆恐縮してるのでは。

でも良スレでした。

203 :デフォルトの名無しさん:02/02/03 17:24
いろいろありまして、MLスレはお引越し済みです。

関数型プログラミング言語ML
http://pc.2ch.net/test/read.cgi/tech/1012445015/

以後はこちらで。

引越しの原因は >>1の説明の不備による混乱。
また、このスレの説明ではMLをまだ知らない人がMLを始めることはないでしょう。

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

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

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)