by keigoi
http://d.hatena.ne.jp/keigoi/20101101/1288584308
let utf8_encode s = s (* let len = String.length s in Utf8.from_int_array (Array.init len (fun i -> Char.code s.[i])) 0 len *)
let f (e:Dom.element) = (fun e -> e#removeChild (Dom.document :> Dom.element)) eでエラー
Error: This expression (右端のe) has type D.element = < _get_accessKey : string; (49個のメソッドが続く…) removeChild : 'n 'o. (< .. > as 'n) -> (< .. > as 'o); removeEventListener : string -> (D.event -> unit) -> bool -> unit; removeEventListener_keyEvent_ : string -> (D.keyEvent -> unit) -> bool -> unit; removeEventListener_mouseEvent_ : string -> (D.mouseEvent -> unit) -> bool -> unit; replaceChild : 'p 'q 'r. (< .. > as 'p) -> (< .. > as 'q) -> (< .. > as 'r); setAttribute : string -> string -> unit > but an expression was expected of type < removeChild : D.element -> 's; .. > Type 'n is not compatible with type D.element = < _get_accessKey : string; (49個のメソッドが続く…) removeChild : 'n 'o. (< .. > as 'n) -> (< .. > as 'o); removeEventListener : string -> (D.event -> unit) -> bool -> unit; removeEventListener_keyEvent_ : string -> (D.keyEvent -> unit) -> bool -> unit; removeEventListener_mouseEvent_ : string -> (D.mouseEvent -> unit) -> bool -> unit; replaceChild : 'p 'q 'r. (< .. > as 'p) -> (< .. > as 'q) -> (< .. > as 'r); setAttribute : string -> string -> unit > The first object type has no method _get_accessKeyこれは
let f (e:Dom.element) = (fun e -> (e:>Dom.element)#removeChild (Dom.document :> Dom.element)) eとすれば通るが、なぜか。