[過去ログ]
関数型言語ML (SML, OCaml, etc.), Part 6 (1002レス)
関数型言語ML (SML, OCaml, etc.), Part 6 http://mevius.5ch.net/test/read.cgi/tech/1245017721/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
911: デフォルトの名無しさん [sage] 2015/02/21(土) 01:03:27.14 ID:KaIHMFIz > - val get_x = #X : {X: real, Y: 'a} -> real; でもこの get_x って、>>902 の point_3d には使えないよね。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/911
913: デフォルトの名無しさん [sage] 2015/02/21(土) 20:03:59.94 ID:KgB/c0aN >>910 >Standard ML のレコード型は構造的部分型関係を持たないよ >構造的部分型関係を持つレコード型に類する型を持つのは OCaml や Java >いわゆるオブジェクト指向におけるクラスとそれらの間の継承関係のこと 自己レスだけど、この段落は間違いが含まれていたので訂正する まず: >Standard ML のレコード型は構造的部分型関係を持たないよ この文章は正しいけど、SML# は「構造的」部分型関係に類する型を持つ だから >>902 の関数 get_x は point_2d とpoint_3d のどちらにも適用できる(>>911) そして SML# だと、point_2d と point_3d のそれぞれの型について、 {X: real, Y:real} >= {X: real, Y:real, Z: real} という部分型関係を持ち、 ここで 関係 a >= b は「a の部分型が b である」ことを意味する 次に: >構造的部分型関係を持つレコード型に類する型を持つのは OCaml や Java >いわゆるオブジェクト指向におけるクラスとそれらの間の継承関係のこと この文章は完全な間違いで、正しくは 「「非構造的」部分型関係を持つレコード型に類する型を持つのは OCaml や Java (...後略)」になる たとえば(架空言語で)二次元座標上の点として 抽象クラス {} を定義し、その具象クラスとして {X軸: real, Y軸: real} および(原点からの相対的な) {角度: real, 距離: real} を定義できる ここで、2つの具象クラスのフィールド構成(=内部的構造)は全く異なるけれど、 {} >= {X軸: real, Y軸: real} および {} >= {角度: real, 距離: real} という部分型関係を持つ http://mevius.5ch.net/test/read.cgi/tech/1245017721/913
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.036s