Ich frage mich, ob es eine Möglichkeit gibt, Haskell auf der JVM laufen zu lassen (kompiliert oder interpretiert).
Es gibt JHaskell auf Sourceforge, aber dieser scheint leer und tot zu sein.
GHC verwendet LLVM als Compiler-Backend. Wäre es eine gute Idee oder möglich, LLVM in Java-Bytecode zu kompilieren? Oder vielleicht ein anderes Compiler-Backend verwenden?
haskell
jvm
jvm-languages
frege
jeha
quelle
quelle
recur
).GOTO
, mit denen TCO implementiert werden können. Oder Sie verwenden Trampoline. Oder Sie verwenden den JVM-Aufrufstapel überhaupt nicht und implementieren nur Ihren eigenen. Der Grund, warum Clojure und Scala nur begrenzte Gesamtbetriebskosten bereitstellen (im Grunde wird nur die Endrekursion optimiert), liegt darin, dass sie den JVM-Aufrufstapel aus Gründen der Interoperabilität und Leistung verwenden möchten . Als Rich Hickey sagte Clojures Designer: Interop, Geschwindigkeit, TCO - Wählen Sie zwei.Antworten:
Vielleicht möchten Sie Frege untersuchen . Zitat von dieser Seite:
Basierend auf einer kurzen Durchsicht der Sprachspezifikation scheint Frege fast ein Haskell-Klon zu sein. Vielleicht soll der Ausdruck "im Geiste von Haskell" einfach die richtige Erwartung setzen.
quelle
Haskell arbeitet wunderbar an der JVM. Siehe Eta , ein Projekt, das GHC 7.10.3 Haskell mit typsicherem Java-Interop auf die JVM bringt.
quelle
Die einzige Sprache, die ich kenne und die in der JVM in der Nähe von Haskell liegt, ist CAL. CAL basiert stark auf Haskell, verfügt jedoch nicht über alle Funktionen von Haskell. Das Typsystem ähnelt Haskell 98, und
do
es fehlt eine syntaktische zuckerähnliche Notation.Hier ist ein Vergleich von Haskell und CAL: CAL für Haskell-Programmierer
Das Eclipse-Plugin ist sehr ausgefeilt und nützlich.
Beachten Sie, dass CAL Teil des Open Quark-Frameworks ist.
quelle
Es gibt große, aber überwindbare Hindernisse für den GHC-Bau der JVM:
http://www.haskell.org/haskellwiki/GHC:FAQ#Why_isn.27t_GHC_available_for_.NET_or_on_the_JVM.3F
(Haben Sie ein oder zwei freie Jahre, um dies zu erreichen?)
quelle