Obj.magic

そう言えば以前id:namasute0氏の前で Obj.magic の話をしたら,自分で定義する方法を教えてくれた.確かこんな感じ:

ux104$ ledit ocaml
        Objective Caml version 3.09.1
       
# exception Ex of _ ;;   
exception Ex of 'a
# let mymagic x =
    try
      raise (Ex x)
    with
      Ex(x) -> x
  ;;
val mymagic : 'a -> 'b = <fun>
# print_int (mymagic (1,2));;
121358- : unit = ()
# print_int (mymagic (1,2));;
112900- : unit = ()
# print_int (mymagic (1,2));;
104442- : unit = ()
# print_int (mymagic (1,2));;
95984- : unit = ()
# print_int (mymagic (1,2));;
153058- : unit = ()            (* ←GCが起きたっぽい *)
# print_float (mymagic 1);;
Bus error
ux104$

それ以来 彼を尊敬している.