No. Tuttavia, il progetto CloudHaskell sta portando a casa la necessità di un supporto esplicito per la serializzazione della chiusura in GHC. La cosa più vicina a CloudHaskell per le chiusure esplicite è il pacchetto distributed-static. Un altro tentativo è il HdpH closure representation. Tuttavia, entrambi utilizzano Template Haskell nel modo Thomas describes below.
La limitazione è la mancanza di supporto statico in GHC, per il quale esiste un GHC ticket non gestito. (Qualsiasi acquirente?). Nella mailing list di CloudHaskell c'è stato il a discussion su quale dovrebbe essere il supporto statico, ma per quanto ne so non è ancora progredito.
Il più vicino a chiunque sia arrivato a una progettazione e implementazione è Jost Berthold, che ha implementato la serializzazione delle funzioni in Eden. Vedi il suo documento IFL 2010 "Orthogonal Serialisation for Haskell". Il supporto per la serializzazione è integrato nel sistema di runtime Eden. (Ora disponibile come libreria separata: packman. Non sono sicuro se può essere usato con GHC o ha bisogno di un GHC rattoppato come nella forcella Eden ...) Qualcosa di simile sarebbe necessario per GHC. Questo è il supporto serializzazione Eden, nella versione biforcuta dalla GHC 7.4:
data Serialized a = Serialized { packetSize :: Int , packetData :: ByteArray# }
serialize :: a -> IO (Serialized a)
deserialize :: Serialized a -> IO a
Quindi: si può serializzare funzioni e strutture di dati. C'è un'istanza Binary
per Serialized a
, che ti consente di controllare un calcolo a lungo eseguito su file! (Vedere la sezione 4.1).
Il supporto per una semplice API di serializzazione nelle librerie di base GHC sarebbe sicuramente il Santo Graal per la programmazione Haskell distribuita. Sarebbe probabilmente semplificare la componibilità tra i sapori Haskell distribuiti (CloudHaskell, MetaPar, HdpH, Eden e così via ...)
fonte
2013-07-22 15:45:37
Vedere anche [Haskell per tutti: Internet of code] (http://www.reddit.com/r/haskell/comments/36d12v/haskell_for_all_the_internet_of_code/) per un suggerimento (teorico) su come codificare le funzioni per inviarli. –