Haskell на JVM?

Чудя се дали има някакъв начин да накарам Haskell да работи на JVM (компилиран или интерпретиран)?

Съществува JHaskell в Sourceforge, но този изглежда празен и мъртъв.

GHC използва LLVM като бекенд на компилатор. Би ли било добра идея или възможно да се компилира LLVM в байт код на Java? Или може би да използвате различен бекенд на компилатора?


person jeha    schedule 31.08.2011    source източник
comment
ЧЗВ за GHC: Защо GHC не е наличен за .NET или на JVM?   -  person Josh Lee    schedule 31.08.2011
comment
И цялата тази тема за haskell-cafe.   -  person Josh Lee    schedule 31.08.2011
comment
Благодаря за линковете. Така че има някои предимно експериментални неща. Използвахте ли някои от тях? Има ли нещо препоръчително да се разгледа по-отблизо?   -  person jeha    schedule 31.08.2011
comment
Не съм ги използвал, но LLVM може да е интересен път.   -  person Josh Lee    schedule 31.08.2011
comment
оптимизацията на опашката на обажданията успя ли да влезе в JVM 1.7?   -  person rampion    schedule 31.08.2011
comment
Оптимизацията на опашката все още изглежда отворен проблем. Ето защо други функционални jvm езици като Clojure се нуждаят от специални конструкции (recur).   -  person jeha    schedule 31.08.2011
comment
Има jaskell.codehaus.org за JVM, не истинското нещо, но по-добре от нищо.   -  person Landei    schedule 01.09.2011
comment
@jeha: Не, TCO е лесно. Seph го прави, Erjang го прави, Kawa и всички други реализации на Scheme на JVM го правят. JVM има изключения, които по същество са същите като GOTO, които могат да се използват за прилагане на TCO. Или използвате батути. Или изобщо не използвате стека за извикване на JVM и просто прилагате свой собствен. Причината, поради която Clojure и Scala предоставят само ограничен TCO (по принцип само опашната рекурсия е оптимизирана) е, че те искат да използват JVM стека за извикване от съображения за оперативна съвместимост и производителност. Както каза Рич Хики, дизайнерът на Clojure: Взаимодействие, скорост, TCO -- Изберете две.   -  person Jörg W Mittag    schedule 01.09.2011
comment
Не мога да си представя, че ще бъде трудно да компилирате Haskell в JVM, ако изобщо не се интересувате от производителността и се фокусирате само върху това, което езикът Haskell изисква. Използвайте батути, както споменава Йорг. Те са лесни за изпълнение. Използвайте най-простите структури от данни, които вършат работата. Не си правете труда да оптимизирате. Сигурен съм, че някой би могъл сам да хакне работеща и пълна реализация в рамките на една седмица, ако наистина го е грижа.   -  person Thomas Eding    schedule 02.09.2011
comment
Производителността или оперативната съвместимост не са моите притеснения досега. Ще се радвам да имам някакво текущо доказателство за концепцията. Така че използването на батути звучи като интересен начин. @trinithis: една седмица звучи доста обещаващо - така че защо някой друг не го хакна?   -  person jeha    schedule 02.09.2011
comment
@jeha: Тъй като производителността и взаимодействието обикновено са двете причини, поради които някой би искал да внедри език на платформата Java като начало.   -  person Jörg W Mittag    schedule 03.09.2011


Отговори (4)


Може да искате да проучите Frege. Цитирам от тази страница:

Frege е нестриктен, чисто функционален език за програмиране в духа на Haskell.

Програмите Frege се компилират в Java и се изпълняват в JVM.

Въз основа на кратък преглед на езиковата спецификация, Frege изглежда почти клонинг на Haskell. Може би фразата в духа на Haskell е просто предназначена да зададе правилното очакване.

person Daniel Pratt    schedule 16.09.2011
comment
Изглежда, че леко са актуализирали страницата си - сега пише, че Frege е Haskell за JVM. което е много по-силно твърдение IMO. - person Michael Anderson; 27.09.2016

Haskell работи прекрасно на JVM. Вижте Eta, проект, който въвежда пълния GHC 7.10.3 Haskell в JVM с безопасна за типа взаимодействие на Java.

person rahulmutt    schedule 13.01.2017

Единственият език, който знам, че е близък до haskell в JVM, е CAL. CAL е до голяма степен базиран на haskell, но не разполага с всички функции на haskell. Типовата система е подобна на Haskell 98 и липсва синтактична захар като нотация do.

Ето сравнение на Haskell и CAL: CAL за програмисти на Haskell

Плъгинът на Eclipse е много изпипан и полезен.

Обърнете внимание, че CAL е част от рамката Open Quark.

person islon    schedule 02.09.2011
comment
Всъщност търся истинския. За CAL не мога да преценя. Но CAL изглежда има типови класове между другото. Първото впечатление наистина е много неприятно. - person jeha; 06.09.2011
comment
CAL наистина има типови класове - доста е близо до Haskell 98 минус доста синтактична захар. - person tgdavies; 08.09.2011
comment
благодаря за допълнителната информация tgdavies, аз самият не съм CAL програмист - person islon; 08.09.2011
comment
От няколко дни се опитвам да получа документа за ЛКД за програмисти на Hakell. Връзката, която предоставяте, изглежда също не помага. Може ли някой да публикува работеща връзка към pdf, моля? - person Ingo; 18.09.2011
comment
@Ingo: тази връзка към ръководството за потребителя трябва да работи, но може би не е най-новата: ресурси .businessobjects.com/labs/cal/cal_users_guide.pdf - person jeha; 30.09.2011

Има големи, но преодолими пречки пред изграждането на GHC към JVM:

http://www.haskell.org/haskellwiki/GHC:FAQ#Why_isn.27t_GHC_available_for_.NET_or_on_the_JVM.3F

(Имате свободна година или две, за да го направите?)

person amindfv    schedule 20.02.2012