코어는 명시 적으로 입력 된 언어이므로 다른 언어에서 생성하기가 매우 어려울 수 있습니다 (GHC 유형 검사기는 그래서 모든 문제가 없다.) 예를 들어, 통상의 항등 함수 (id = \x -> x :: forall a. a -> a)
는 a
*
종류의 입력 변수 인
id = \(a :: *) (x :: a) -> a
된다. 유형 수준 forall
바인딩의 용어 수준 자리 표시 자입니다. 마찬가지로 id
을 호출 할 때 첫 번째 인수로 형식을 지정해야하므로 Haskell 식 (id 42)
이 (id Int 42)
으로 변환됩니다. 이러한 형식 바인딩 및 형식 응용 프로그램은 생성 된 컴퓨터 코드에 존재하지 않지만 컴파일러 변환이 올바른지 확인하는 데 유용합니다.
밝은면에서 단지 Haskell을 생성하는 것이 가능할 수 있습니다 - GHC가 항상 그 유형을 결정할 수있는 방식으로 코드를 생성 할 수 있다면 본질적으로 하스켈의 작은 하위 집합을 사용합니다 . 그러나 이것이 작동 할 수 있는지 여부는 소스 언어에 따라 다릅니다.
"현재 (버전 6.8.2 현재) GHC는 외부 코어 파일을 소스로 읽을 수 없습니다." _internal_ core에서 표현을 만들어 GHC로 전달해야 할 것입니다. 당신의 기대를 위해 지나치게 비관적 이길 바래지만 ghc-api에 대한 전화가 많이 필요합니다. –