Zastanawiam się, czy istnieje sposób, aby Haskell działał na JVM (skompilowanym lub zinterpretowanym)?
Na Sourceforge istnieje JHaskell, ale ten wydaje się być pusty i martwy.
GHC używa LLVM jako zaplecza kompilatora. Czy byłoby dobrym pomysłem lub możliwą kompilacją LLVM do kodu bajtowego Javy? A może użyć innego zaplecza kompilatora?
haskell
jvm
jvm-languages
frege
jeha
źródło
źródło
recur
).GOTO
, których można użyć do wdrożenia całkowitego kosztu posiadania. Albo używasz trampolin. Lub w ogóle nie używasz stosu wywołań JVM i po prostu implementujesz własny. Powodem, dla którego Clojure i Scala zapewniają tylko ograniczony TCO (zasadniczo zoptymalizowana jest tylko rekurencja ogona ), jest to, że chcą używać stosu wywołań JVM ze względu na interoperacyjność i wydajność. Jak powiedział Rich Hickey, projektant Clojure: Interop, szybkość, całkowity koszt posiadania - wybierz dwa.Odpowiedzi:
Możesz zbadać Frege . Cytowanie z tej strony:
Opierając się na krótkiej analizie specyfikacji języka, Frege wygląda na prawie klona Haskella. Być może wyrażenie „w duchu Haskella” jest po prostu przeznaczone do przedstawienia właściwych oczekiwań.
źródło
Haskell pięknie działa na JVM. Zobacz Eta , projekt, który wprowadza pełny GHC 7.10.3 Haskell do JVM z bezpieczną dla typów obsługą Java.
źródło
Jedynym językiem, który znam, który jest zbliżony do haskell w JVM, jest CAL. CAL jest w dużej mierze oparty na programie haskell, ale nie ma wszystkich jego funkcji. System typów jest podobny do Haskell 98, a
do
brakuje notacji cukru syntaktycznego .Oto porównanie Haskell i CAL: CAL for Haskell Programmers
Wtyczka Eclipse jest bardzo dopracowana i użyteczna.
Zwróć uwagę, że licencja CAL jest częścią struktury Open Quark.
źródło
Istnieją duże, ale możliwe do przezwyciężenia przeszkody w tworzeniu GHC dla JVM:
http://www.haskell.org/haskellwiki/GHC:FAQ#Why_isn.27t_GHC_available_for_.NET_or_on_the_JVM.3F
(Masz wolny rok lub dwa, aby to się stało?)
źródło