2014-06-11 5 views
12

Ist es möglich, ein Haskell-Modul zu JS mit ghcjs zu kompilieren? Ich habe damit gespielt, aber es scheint, es erfordert main Funktion definiert werden, bevor es JS generieren würde. Ein Spielzeug-Code unten:Kompilieren von Haskell-Modul zu Javascript mit ghcjs

module Test where 

add :: Int -> Int -> Int 
add x y = x + y 

ich kann nicht herausfinden, wie es zu JS kompilieren ghcjs verwenden. Es werden nur .hi und .o Dateien kompiliert, wenn die Hauptfunktion nicht definiert ist. Wenn ich einen Weg finden kann, um es zu kompilieren JS (mit entsprechenden Z-encoded Funktionsname und ein entsprechendes JS-Objekt, wie wir in FFI für C), dann könnte ich leistungsfähigere Haskell-Bibliotheken wie unordered-containers und vector, um einige zu implementieren Algorithmus, kompilieren zu JS und verwenden in Elm durch JS FFI.

Fay scheint dazu in der Lage zu sein. Ich werde es zuerst für ghcjs untersuchen.

+0

Was ist Ihre genaue Befehlszeile? –

+0

@JoachimBreitner, 'ghcjs Test.hs', wobei Test.hs über dem Code liegt. ghcjs behauptet, dass es "JavaScript erzeugt", aber ich sehe keinen js-Code. Ich benutze Version 0.1.0. – Sal

+0

Haben Sie 'ghcjs -c Test.hs' probiert? Funktioniert das besser? –

Antwort

6

Ich fragte gerade den ghcjs Autor (luite) im IRC, und er sagte, "es gibt keinen guten Weg noch, eine Bibliothek direkt zu exportieren."

Er scheint sehr interessiert an der Unterstützung dieser Fähigkeit, so hoffe ich, und optimistisch, dass dies in naher Zukunft ändern wird. Der Ort, an dem Sie dieses Problem beobachten können, ist the ticket requesting this feature on github.

+0

aber was ist der Status dieser als oder 2015 Apr? –

+1

Das Ticket wurde seit Februar 2015 nicht aktualisiert und es ist immer noch offen, es sieht also so aus, als ob es noch nicht fertig ist. Die Entwicklung von ghcjs ist immer noch sehr aktiv (mit Commits am letzten Tag), also bin ich immer noch optimistisch, dieses Feature in der Zukunft zu haben. –