JVM'de Haskell?


83

Haskell'i JVM'de çalıştırmanın bir yolu olup olmadığını merak ediyorum (derlenmiş veya yorumlanmış)?

Sourceforge'da JHaskell var ama bu boş ve ölü görünüyor.

GHC, derleyici arka ucu olarak LLVM'yi kullanır. LLVM'yi Java bayt koduna derlemek iyi bir fikir veya mümkün müdür? Ya da farklı bir derleyici arka ucu mu kullanıyorsunuz?



4
Ve haskell-cafe'deki bu konu .
Josh Lee

3
Kuyruk arama optimizasyonu hala açık bir sorun gibi görünüyor. Clojure gibi diğer işlevsel jvm dillerinin özel yapılara ( recur) ihtiyaç duymasının nedeni budur .
jeha

13
@jeha: Hayır, TCO kolaydır. Seph yapıyor, Erjang yapıyor, Kawa ve JVM'deki diğer tüm Scheme uygulamaları yapıyor. JVM, temelde GOTOTCO'yu uygulamak için kullanılabilen İstisnalara sahiptir . Ya da trambolin kullanıyorsun. Ya da JVM çağrı yığınını hiç kullanmazsınız ve sadece kendinizinkini uygularsınız. Clojure ve Scala'nın yalnızca sınırlı TCO sağlamasının nedeni (temelde yalnızca kuyruk özyinelemesi optimize edilmiştir), birlikte çalışabilirlik ve performans nedenleriyle JVM çağrı yığınını kullanmak istemeleridir . Clojure'un tasarımcısı Rich Hickey'in dediği gibi: Birlikte çalışma, hız, TCO - İki tane seçin.
Jörg W Mittag

3
Performansı hiç umursamıyorsanız ve sadece Haskell dilinin gerektirdiklerine odaklanıyorsanız, Haskell'i JVM'ye derlemenin zor olacağını hayal edemiyorum. Jorg'un dediği gibi trambolinleri kullanın. Uygulaması kolaydır. İşi yapan en basit veri yapılarını kullanın. Optimizasyonla uğraşmayın. Eminim birisi gerçekten ilgilenirse çalışan ve tam bir uygulamayı bir hafta içinde tek başına hackleyebilir.
Thomas Eding

Yanıtlar:


80

Frege'yi araştırmak isteyebilirsiniz . O sayfadan alıntı yapmak:

"Frege, Haskell ruhuna uygun, katı olmayan, saf bir işlevsel programlama dilidir."

"Frege programları Java'da derlenir ve bir JVM'de çalıştırılır."

Dil spesifikasyonunun kısa bir incelemesine dayanarak, Frege neredeyse bir Haskell klonu gibi görünüyor. Belki de "Haskell ruhu içinde" ifadesi uygun beklentiyi oluşturmaya yöneliktir.


1
Görünüşe göre sayfalarını biraz güncellediler - şimdi "Frege, JVM için bir Haskell'dir." bu çok daha güçlü bir iddiadır IMO.
Michael Anderson

25

Haskell, JVM üzerinde çok güzel çalışıyor. Bkz Eta , tip-güvenli bir Java birlikte çalışma ile JVM üzerine tam GHC 7.10.3 Haskell getiren bir proje.


12

JVM'de haskell'e yakın bildiğim tek dil CAL'dir. CAL, ağırlıklı olarak haskell'e dayanır ancak haskell'in tüm özelliklerine sahip değildir. Tip sistemi Haskell 98'e benzer ve sözdizimsel şeker benzeri dogösterim eksiktir.

Haskell ve CAL karşılaştırması: Haskell Programcıları için CAL

Eclipse eklentisi çok parlak ve kullanışlıdır.

CAL'nin Open Quark çerçevesinin bir parçası olduğunu unutmayın.


Aslında "gerçek olanı" arıyorum. CAL hakkında yargılayamıyorum. Ancak CAL, btw tip sınıflarına sahip görünüyor. İlk izlenim gerçekten çok acımasız.
jeha

CAL'ın gerçekten de tip sınıfları var - Haskell 98'e oldukça yakın eksi biraz sözdizimsel şeker.
tgdavies

ekstra bilgi için teşekkürler tgdavies, ben kendim bir CAL programcısı değilim
islon

Bazı günler için CAL for Hakell Programmers belgesini almaya çalışıyorum. Sağladığınız bağlantı da yardımcı olmuyor. Biri pdf'ye çalışan bir bağlantı gönderebilir mi lütfen?
Ingo

@Ingo: Kullanıcı kılavuzuna giden bu bağlantı işe yaramalı, ancak en sonuncusu olmayabilir: resources.businessobjects.com/labs/cal/cal_users_guide.pdf
jeha

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.