[過去ログ]
関数型言語ML (SML, OCaml, etc.), Part 6 (1002レス)
関数型言語ML (SML, OCaml, etc.), Part 6 http://mevius.5ch.net/test/read.cgi/tech/1245017721/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
564: デフォルトの名無しさん [sage] 2012/10/12(金) 11:22:15.18 # type t = int * t;; Error: The type abbreviation u is cyclic # type t = { x: int; y: t };; type t = { x : int; y : t; } # type u = u option;; Error: The type abbreviation u is cyclic # type u = Some of u | None;; type u = Some of u | None だれか解説してくれ。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/564
566: デフォルトの名無しさん [sage] 2012/10/12(金) 12:26:46.91 >>564 最初のやつは値を作れないし、三番目の型パラメータとして渡すようなのもoptionの中身次第では同じ事になるからじゃね? と思ったが二番目が通るのがよくわからん。 http://mevius.5ch.net/test/read.cgi/tech/1245017721/566
567: デフォルトの名無しさん [sage] 2012/10/12(金) 17:55:16.91 >>564 (**** スマンがOCamlは久しく触っていないので、SMLで解説してみる -- 処理系は SML/NJ ****) - type t = int * t; Error: unbound type constructor: t (* まだ束縛されていない型構成子 t を右辺の型式内で参照しているからエラー *) - type t = { x: int, y: t}; Error: unbound type constructor: t (* 最初の例と同様に、型構成子 t はまだ束縛されていないのでエラー *) - type u = u option; Error: unbound type constructor: u (* これも同じ理由でエラー *) - datatype u = Some of u | None; datatype u = None | Some of u (* 上記のtype宣言文とは異なり、datatype宣言文であれば再帰的なデータ型定義が許されている *) (**** 以上だけど、SMLなら不可解な振る舞いは無く、現象を明解に説明できるよ.... ****) http://mevius.5ch.net/test/read.cgi/tech/1245017721/567
568: デフォルトの名無しさん [sage] 2012/10/12(金) 18:44:39.63 >>564 abbreviationではない新しい型がcyclicかどうかは仕様を決める人が自由に決める 一方、タプルとoptionがcyclicではないという仕様は既に決まっているので タプルのabbreviationとoptionのabbreviationはcyclicではないはず http://mevius.5ch.net/test/read.cgi/tech/1245017721/568
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.181s*