답변:
이것은 흥미로운 질문입니다! Anthony의 대답에서 알 수 있듯이 유형 검사에 대한 용어를 평가할 통역사가 이미 있다면 비 종속 기능 언어를 컴파일하는 일반적인 방법을 사용할 수 있습니다 .
이것이 Edwin Brady가 취한 접근법입니다. 이제 이것은 개념적으로 간단하지만 형식 검사를 수행 할 때 컴파일의 속도 이점을 잃습니다. 이것은 여러 가지 방식으로 해결되었습니다.
먼저 변환 검사를 수행하기 위해 항을 바이트 코드로 컴파일하는 가상 머신을 구현할 수 있습니다. 이것은 Benjamin Gregoirevm_compute
가 Coq에서 구현 한 아이디어 입니다. 명백하게도 이 이 정확한 주제에 더크 Kleeblatt에 의해 논문하지만 실제 기계 코드가 아닌 가상 머신 다운.
둘째,보다 전통적인 언어로 코드를 생성 할 수 있으며, 실행시 의존적으로 유형이 지정된 프로그램을 타입 검사하는 데 필요한 모든 변환을 검사한다. 즉, Haskell을 사용하여 Agda 모듈을 유형 검사 할 수 있습니다. 코드를 컴파일하고 실행할 수 있으며, 허용되는 경우 종속 형식 언어의 코드는 형식이 잘 설정된 것으로 가정 할 수 있습니다 (구현 및 컴파일러 오류 제외). 나는 Mathieu Boesflug가 제안한이 접근법을 처음 들었습니다 .
ocamlopt
또는 GHC를 사용하여 컴파일 :-) (이것은 Coq and Agda 접근법입니다.)