Nein. Das CloudHaskell-Projekt macht jedoch deutlich, dass in GHC die explizite Unterstützung der Serialisierung von Schlüssen erforderlich ist. Das nächste, was CloudHaskell explizit sperren muss, ist das distributed-static Paket. Ein weiterer Versuch ist die HdpH closure representation. Beide verwenden jedoch Template Haskell in der Art Thomas describes below.
Die Einschränkung ist ein Mangel an statischer Unterstützung in GHC, für die es derzeit eine unbehandelte GHC ticket gibt. (Irgendwelche Abnehmer?). Es gab a discussion auf der CloudHaskell-Mailingliste darüber, wie statische Unterstützung eigentlich aussehen sollte, aber soweit ich weiß, ist noch nichts fortgeschritten.
Jost Berthold, der die Funktionserialisierung in Eden implementiert hat, ist Jester Design am nächsten gekommen. Siehe sein IFL 2010 Papier "Orthogonal Serialisation for Haskell". Die Unterstützung für die Serialisierung wird in das Eden-Laufzeitsystem eingebunden. (Jetzt als separate Bibliothek verfügbar: packman. Nicht sicher, ob es mit GHC verwendet werden kann oder einen gepatchten GHC wie in der Eden-Gabel benötigt ...) Ähnliches wäre für GHC erforderlich. Dies ist die Unterstützung für die Serialisierung Eden, in der Fassung von GHC gegabelt 7.4:
data Serialized a = Serialized { packetSize :: Int , packetData :: ByteArray# }
serialize :: a -> IO (Serialized a)
deserialize :: Serialized a -> IO a
So: Man kann Funktionen und Datenstrukturen serialisiert. Es gibt eine Binary
Instanz für Serialized a
, mit der Sie eine lang laufende Berechnung auf Datei prüfen können! (Siehe Abschnitt 4.1).
Die Unterstützung für solch eine einfache Serialisierungs-API in den GHC-Basisbibliotheken wäre sicherlich der Heilige Gral für verteilte Haskell-Programmierung. Es wäre wahrscheinlich die Kombinierbarkeit zwischen den verteilten Haskell Aromen vereinfachen (CloudHaskell, MetaPar, HdpH, Eden und so weiter ...)
Siehe auch [Haskell für alle: Das Internet des Codes] (http://www.reddit.com/r/haskell/comments/36d12v/haskell_for_all_the_internet_of_code/) für einen (theoretischen) Vorschlag, wie man Funktionen kodiert um sie zu senden. –