핵심은 GHC의 중간 언어입니다. Reading Core는 프로그램의 성과를 더 잘 이해하는 데 도움이됩니다. 누군가 Core 읽기에 대한 문서 나 자습서를 요청했지만 많이 찾을 수 없었습니다.
GHC Core를 읽을 수있는 문서는 무엇입니까?
지금까지 찾은 내용은 다음과 같습니다.
핵심은 GHC의 중간 언어입니다. Reading Core는 프로그램의 성과를 더 잘 이해하는 데 도움이됩니다. 누군가 Core 읽기에 대한 문서 나 자습서를 요청했지만 많이 찾을 수 없었습니다.
GHC Core를 읽을 수있는 문서는 무엇입니까?
지금까지 찾은 내용은 다음과 같습니다.
답변:
GHC Core는 모든 Haskell이 번역되는 시스템 FC 언어입니다. Core의 대략적인 문법은 다음과 같습니다.
코어는 더 간단하고 잘 알려진 System F 와 밀접한 관련이 있습니다. GHC가 Core 수준에서 수행하는 모든 변환 은 성능을 향상시키기 위해이 Core 표현의 형식 보존 리팩토링입니다. 잘 알려져 있지는 않지만 GHC를 프로그래밍하기 위해 Core로 직접 작성할 수 있습니다.
GHC Core는 컴파일러 파이프 라인에 적합합니다 (2002 년의 sans-LLVM 및 CMM).
GHC Core에 대해 배울 주요 문서는 다음과 같습니다.
이해를 도울 수있는 관련 자료 :
코어는 다음과 같이 STG 코드로 변환됩니다.
코어의 재미있는 이름은 "Z 인코딩"으로 인코딩됩니다.
GHC 코어의 종류와 종류 (Tolmach의 논문에서) :
마지막으로, GHC가 알고있는 기본 지침에 따라 Haskell을 최적화하면 GHC의 Primops 가 GHC Core 출력에 정기적으로 나타납니다. 프리 모프 세트는 사전 처리 된 파일 에서 코어 함수 세트로 제공됩니다 .
Don이 언급 한 것처럼 GHC 핵심 언어는 아니지만 STG 언어는 매우 유사합니다. 나는 최근에 STG 언어 + 기계의 유형 안전을 증명하는 연습을 겪은 후 코어를 쉽게 이해할 수 있음을 발견했습니다.
STG를 배우기 위해 사용한 텍스트는 접근하기 쉽습니다. 스톡 하드웨어에 게으른 기능 언어 구현 : Simon Peyton-Jones 의 척추없는 태그없는 G- 머신 . 이 논문의 대부분은 구현 세부 사항에 관한 것이지만, 특히 4 절은 반 직관적 인 설계 결정에 동기를 부여하고 map
.