JVM의 Haskell?


83

하스켈을 JVM (컴파일 또는 해석)에서 실행할 수있는 방법이 있는지 궁금합니다.

Sourceforge에 JHaskell이 있지만 이것은 비어 있고 죽은 것처럼 보입니다.

GHC는 LLVM을 컴파일러 백엔드로 사용합니다. LLVM을 Java 바이트 코드로 컴파일하는 것이 좋은 아이디어입니까 아니면 가능합니까? 아니면 다른 컴파일러 백엔드를 사용할까요?



4
그리고 haskell-cafe의 전체 스레드 입니다.
Josh Lee

3
테일 콜 최적화는 여전히 미해결 문제인 것 같습니다. 이것이 Clojure와 같은 다른 기능적 jvm 언어에 특수 구조 ( recur) 가 필요한 이유 입니다.
jeha

13
@jeha : 아뇨, TCO는 쉽습니다. Seph는 그것을하고, Erjang은 그것을하고, Kawa와 JVM의 다른 모든 Scheme 구현은 그것을한다. JVM에는 기본적으로 GOTOTCO를 구현하는 데 사용할 수있는 과 동일한 예외 가 있습니다. 또는 트램폴린을 사용합니다. 또는 JVM 호출 스택을 전혀 사용하지 않고 직접 구현하십시오. Clojure에서와 스칼라는 총 소유 비용 (TCO)을 제한 제공하는 이유 (기본적으로 만 꼬리 재귀 가 있기 때문에 최적화)입니다 원하는 상호 운용성 및 성능 이유로 JVM의 호출 스택을 사용합니다. Rich Hickey로서 Clojure의 디자이너는 Interop, 속도, TCO-두 가지를 선택하십시오.
Jörg W Mittag 2011 년

3
성능에 전혀 신경 쓰지 않고 Haskell 언어가 요구하는 것에 집중한다면 하스켈을 JVM으로 컴파일하는 것이 어려울 것이라고 상상할 수 없습니다. Jorg가 언급 한대로 트램폴린을 사용하십시오. 구현하기 쉽습니다. 작업을 수행하는 가장 간단한 데이터 구조를 사용하십시오. 최적화에 신경 쓰지 마십시오. 나는 누군가가 실제로 신경을 쓰면 일주일 이내에 혼자서 제대로 작동하고 완전한 구현을 해킹 할 수 있다고 확신합니다.
Thomas Eding 2011 년

답변:


80

Frege 를 조사 할 수 있습니다 . 해당 페이지에서 인용 :

"Frege는 Haskell의 정신에 따른 엄격하지 않은 순수 함수형 프로그래밍 언어입니다."

"Frege 프로그램은 Java로 컴파일되고 JVM에서 실행됩니다."

언어 사양을 간략히 살펴보면 Frege는 거의 Haskell 복제품으로 보입니다. 아마도 "하스켈의 정신으로"라는 문구는 적절한 기대치를 설정하기위한 단순한 의미 일 것입니다.


1
페이지를 약간 업데이트 한 것 같습니다. 이제 "Frege는 JVM을위한 하스켈입니다."라고 표시됩니다. 이것은 훨씬 더 강력한 주장 IMO입니다.
Michael Anderson

25

Haskell은 JVM에서 아름답게 작동합니다. 유형이 안전한 Java interop을 사용하여 전체 GHC 7.10.3 Haskell을 JVM에 제공하는 프로젝트 인 Eta를 참조하십시오 .


12

JVM에서 haskell에 가까운 유일한 언어는 CAL입니다. CAL은 하스켈을 많이 기반으로하지만 하스켈의 모든 기능을 가지고있는 것은 아닙니다. 유형 시스템은 Haskell 98과 유사하며 do표기법 과 같은 구문 설탕 이 없습니다.

다음은 Haskell과 CAL의 비교입니다 : Haskell 프로그래머를위한 CAL

이클립스 플러그인은 매우 세련되고 유용합니다.

CAL은 Open Quark 프레임 워크의 일부입니다.


사실 저는 "진짜"를 찾고 있습니다. CAL에 대해 판단 할 수 없습니다. 그러나 CAL에는 btw 유형 클래스가있는 것 같습니다. 첫인상은 참으로 매우 성급합니다.
jeha 2011 년

CAL에는 실제로 유형 클래스가 있습니다. Haskell 98에서 약간의 구문 설탕을 뺀 값에 매우 가깝습니다.
tgdavies 2011 년

추가 정보 tgdavies에 감사드립니다. 저는 CAL 프로그래머가 아닙니다
islon 2011-09-08

며칠 동안 저는 Hakell 프로그래머 용 CAL 문서를 얻으려고합니다. 제공하신 링크도 도움이되지 않는 것 같습니다. 누군가가 pdf에 대한 작업 링크를 게시 할 수 있습니까?
Ingo

@Ingo : 사용자 설명서에이 링크가 작동해야하지만 어쩌면 그것은 최근의 일이 아니다 : resources.businessobjects.com/labs/cal/cal_users_guide.pdf
jeha

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.