매개 변수가없는 변형의 경우 변형없이 OCaml 정수로 저장되며 정수는 내에서 의 오름차순으로 오름차순으로 저장됩니다.OCaml에서 변형에 대한 메모리 표현
type t1 = Apple | Orange;;
다음 peek Apple;;
이 0
및 peek Orange;;
반환합니다 반환합니다 나는 유형을 정의
let peek x = ((Obj.magic (Obj.repr x)):int);;
: 예를 들어
,의는 변형의 실제 정수 값을 볼 수있는 기능 peek
를 정의 할 수 1
. 나는 2 유형을 정의하는 경우
그러나
type t2 = Empty | Node;;
는 다시 peek Empty;;
는 peek Node
에 대한 0
및 1
를 반환합니다.
기본적으로 변형에 대한 정수의 증가는 전역 적입니다.
그때 질문이 :
OCaml의 런타임 중에 타입 정보를 유지하지 않습니다 때문에, 어떻게 정수가 정상 정수 또는 매개 변수없이 변형되는 알고 런타임 수 있습니까?
OCaml 런타임은 실제로 다른 유형에 속하는 두 변종 간의 차이점을 어떻게 표현합니까? 예를 들어, 차이점을 알려주는 방법은 무엇입니까? 및 비어 있음은 둘 다 0이므로?
예외, 열기 유형 및 다형성 변형이 서로 다릅니다. – nlucaroni
@nlucaroni'open-types'은 무엇을 의미합니까? –
ocaml 4.02의 새로운 기능 - http://caml.inria.fr/mantis/view.php?id=5584 – nlucaroni