Haskell на JVM?

Мне интересно, есть ли способ заставить Haskell работать на JVM (скомпилированный или интерпретируемый)?

На Sourceforge существует JHaskell, но этот кажется пустым и мертвым.

GHC использует LLVM в качестве серверной части компилятора. Было бы неплохо или возможно скомпилировать LLVM в байт-код Java? Или, может быть, использовать другой бэкэнд компилятора?


person jeha    schedule 31.08.2011    source источник
comment
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
Для JVM существует jaskell.codehaus.org, не совсем настоящий, но лучше, чем ничего.   -  person Landei    schedule 01.09.2011
comment
@jeha: Нет, TCO - это просто. Seph делает это, Erjang делает это, Kawa и все другие реализации Scheme на JVM делают это. В JVM есть исключения, которые в основном аналогичны GOTO, которые можно использовать для реализации TCO. Или вы используете батуты. Или вы вообще не используете стек вызовов JVM и просто реализуете свой собственный. Причина, по которой Clojure и Scala предоставляют только ограниченную совокупную стоимость владения (в основном, оптимизирована только хвостовая рекурсия), заключается в том, что они хотят использовать стек вызовов JVM для обеспечения совместимости и производительности. Как сказал Рич Хики, дизайнер Clojure: взаимодействие, скорость, совокупная стоимость владения - выберите два.   -  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.

После краткого ознакомления со спецификацией языка Фреге выглядит почти клоном Haskell. Возможно, фраза в духе Haskell проста и предназначена для правильного ожидания.

person Daniel Pratt    schedule 16.09.2011
comment
Похоже, они немного обновили свою страницу - теперь на ней написано, что Frege - это Haskell для JVM. что является гораздо более сильным заявлением ИМО. - 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 очень доработан и полезен.

Обратите внимание, что клиентская лицензия является частью платформы 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
В течение нескольких дней я пытаюсь получить документ CAL для программистов Hakell. Ссылка, которую вы предоставляете, тоже не помогает. Может кто-нибудь выложить рабочую ссылку на pdf, пожалуйста? - person Ingo; 18.09.2011
comment
@Ingo: эта ссылка на руководство пользователя должна работать, но, возможно, она не последняя: resources .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