Haskell compiler를 공부하고 있습니다.

ozon1000의 이미지

technical overview를 살펴보면 Haskell은

Haskell code -> core language -> STG language -> abstract c 이런 순서로

중간코드가 생성되던데요.. (자세하고 확실하지는 않습니다.)

이렇게 여러개의 언어로 번역되고 실행되면 장점은 무엇인지 궁금합니다.

사실 아직 core language랑 STG language가 무엇인지는 잘 모르겠습니다...(너무너무 어렵네요)

질문은 그것입니다.

여러개의 중간코드로 생성되어 최종 목적코드로 실행되면 다른 C 혹은 C++ 등의 언어(절차형)
와 비교해서 장점이 무엇이 있을까요?