2013-03-07 5 views
10

구조 형 입력에 대해 연구하는 동안 how interfaces in Go are translated to method lookup tables at runtime을 설명하는 다음 게시물을 발견했습니다. 이 게시물에 설명 된 프로세스는 스칼라의 선택적 구조 유형 시스템과 Java 언어의 White Oak 확장에 대해 설명한 reflective and generative techniques과 크게 다릅니다.OCaml, Scala 및 Go의 구조 형 입력 구현

구조적인 타이핑이 OCaml에서 어떻게 구현되는지에 대한 심도 깊은 자료가 있습니까? 필자는 명목 형 시스템과의 최적화 또는 런타임 성능 비교에 대한 논의에 특히 관심이 있습니다.

+0

재미있는 의사. – didierc

답변

8

OCaml 객체 내부에 대한 자세한 설명은 this blog post에 Jake Donham이 있습니다. 그 중 요점은 객체 지원이 대부분 an internal library으로 구현되며, 대부분 효율적인 메시지 전달과 관련하여 컴파일러 자체 (물론 유형 시스템의 객체 유형 논리)에서 약간의 논리만으로 구현된다는 것입니다.

저는 언어의이 부분에 대해 전문가가 아니지만, 대략적인 검사를 한 후에 OCaml은 (메서드 테이블의 슬롯으로 확인 된) 정렬 된 메서드 형식의 메서드 조회에 의존하는 것처럼 보입니다. 마지막으로 호출 된 메소드, 정적으로 알려진 호출의 최적화, 특히 메소드 구현 내부의 자체 호출 마지막으로, 일반적으로 사용되는 일부 기능 (예 : 인스턴스 변수 getter 및 setter)은 성능을 개선하고 더 중요한 것은 코드 크기를 줄이기 위해 특별히 식별되고 내부 OO 라이브러리에 impl 유형으로 인코딩됩니다.