하스켈을 JVM (컴파일 또는 해석)에서 실행할 수있는 방법이 있는지 궁금합니다.
Sourceforge에 JHaskell이 있지만 이것은 비어 있고 죽은 것처럼 보입니다.
GHC는 LLVM을 컴파일러 백엔드로 사용합니다. LLVM을 Java 바이트 코드로 컴파일하는 것이 좋은 아이디어입니까 아니면 가능합니까? 아니면 다른 컴파일러 백엔드를 사용할까요?
하스켈을 JVM (컴파일 또는 해석)에서 실행할 수있는 방법이 있는지 궁금합니다.
Sourceforge에 JHaskell이 있지만 이것은 비어 있고 죽은 것처럼 보입니다.
GHC는 LLVM을 컴파일러 백엔드로 사용합니다. LLVM을 Java 바이트 코드로 컴파일하는 것이 좋은 아이디어입니까 아니면 가능합니까? 아니면 다른 컴파일러 백엔드를 사용할까요?
recur
) 가 필요한 이유 입니다.
GOTO
TCO를 구현하는 데 사용할 수있는 과 동일한 예외 가 있습니다. 또는 트램폴린을 사용합니다. 또는 JVM 호출 스택을 전혀 사용하지 않고 직접 구현하십시오. Clojure에서와 스칼라는 총 소유 비용 (TCO)을 제한 제공하는 이유 (기본적으로 만 꼬리 재귀 가 있기 때문에 최적화)입니다 원하는 상호 운용성 및 성능 이유로 JVM의 호출 스택을 사용합니다. Rich Hickey로서 Clojure의 디자이너는 Interop, 속도, TCO-두 가지를 선택하십시오.
답변:
Frege 를 조사 할 수 있습니다 . 해당 페이지에서 인용 :
"Frege는 Haskell의 정신에 따른 엄격하지 않은 순수 함수형 프로그래밍 언어입니다."
"Frege 프로그램은 Java로 컴파일되고 JVM에서 실행됩니다."
언어 사양을 간략히 살펴보면 Frege는 거의 Haskell 복제품으로 보입니다. 아마도 "하스켈의 정신으로"라는 문구는 적절한 기대치를 설정하기위한 단순한 의미 일 것입니다.
JVM에서 haskell에 가까운 유일한 언어는 CAL입니다. CAL은 하스켈을 많이 기반으로하지만 하스켈의 모든 기능을 가지고있는 것은 아닙니다. 유형 시스템은 Haskell 98과 유사하며 do
표기법 과 같은 구문 설탕 이 없습니다.
다음은 Haskell과 CAL의 비교입니다 : Haskell 프로그래머를위한 CAL
이클립스 플러그인은 매우 세련되고 유용합니다.
CAL은 Open Quark 프레임 워크의 일부입니다.
JVM에 GHC를 구축하는 데는 크지 만 극복 할 수있는 장애물이 있습니다.
http://www.haskell.org/haskellwiki/GHC:FAQ#Why_isn.27t_GHC_available_for_.NET_or_on_the_JVM.3F
(이를 위해 1 ~ 2 년 여유가 있습니까?)