宿題のへテロなリストです。こんなコードがスグに書けなくてスミマセン。
- オブジェクトの方がなるほどという感じです。showable (new integer 10) ってどう読めば? -- [[けいご]] &new{2006-12-01 (金) 13:46:37};
- やっぱり積(objectとかレコードとか)の方が直感的ではありますよね。和(variant)の方の多相性も便利なんですが。ところで showable (new integer 10) の読み方ですか? 発音? -- [[ogasawara]] &new{2006-12-01 (金) 17:33:26};

#comment

 (* by poly. variant *)
 type t = [ `Person of string | `Integer of int ]
 
 let show = function
     `Person p -> p
   | `Integer i -> string_of_int i 
 
 let data = [ `Person "ogasawara";
	      `Integer 10 ]
 let _ =
   List.iter (fun t -> print_string (show t)) data
 
 let show' = function
     #t as t -> show t
   | `Float f -> string_of_float f
 
 let data = [ `Person "ogasawara";
              `Integer 10;
	      `Float 22.0 ]
 let _ =
   List.iter (fun t -> print_string (show' t)) data
 
 (* by object *)
 class person name = object
   val name : string = name
   method show = name
 end
 
 class integer i = object
   val value : int = i
   method get = value
   method show = string_of_int i
 end
 
 class type showable = object
   method show : string 
 end
 
 let showable c = (c :> showable)
 
 let data = [ showable (new person "ogasawara");
              showable (new integer 10) ]
 
 let _ = 
   List.iter (fun o -> print_string o#show) data
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS