[過去ログ] 関数型言語ML (SML, OCaml, etc.), Part 6 (949レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
910(2): 2015/02/21(土)00:55 ID:KgB/c0aN(1/3) AAS
>>906
Standard ML のレコード型は構造的部分型関係を持たないよ
構造的部分型関係を持つレコード型に類する型を持つのは OCaml や Java
いわゆるオブジェクト指向におけるクラスとそれらの間の継承関係のこと
また「多相レコード型」という用語の意味が「パラメタ型多相なレコード型」
であるならば、Standard ML は多相レコード型を持つことになる
ここでパラメタ型多相は、Java だとジェネリクス(総称型)と呼ばれている
結論として、Standard ML(とその処理系 SML/NL および SML#)は1と3を満たす
次にファーストクラスについて、>>902 のコードにおける関数 get_x の定義だけど、
「フィールドとはレコード値からフィールド値への写像(関数)である」
省12
912: 2015/02/21(土)01:45 ID:KgB/c0aN(2/3) AAS
うん、使えない
それが >>910 で書いた(Standard ML言語仕様における)「型システム」の制約だね
その制約を無くした SML# が特異なだけで、SML/NJ 以外の大半の SML 処理系に同じ制約がある
913: 2015/02/21(土)20:03 ID:KgB/c0aN(3/3) AAS
>>910
>Standard ML のレコード型は構造的部分型関係を持たないよ
>構造的部分型関係を持つレコード型に類する型を持つのは OCaml や Java
>いわゆるオブジェクト指向におけるクラスとそれらの間の継承関係のこと
自己レスだけど、この段落は間違いが含まれていたので訂正する
まず:
>Standard ML のレコード型は構造的部分型関係を持たないよ
この文章は正しいけど、SML# は「構造的」部分型関係に類する型を持つ
だから >>902 の関数 get_x は point_2d とpoint_3d のどちらにも適用できる(>>911)
そして SML# だと、point_2d と point_3d のそれぞれの型について、
省11
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s