Нет. Однако проект CloudHaskell ведет домой необходимость явной поддержки сериализации закрытия в GHC. Ближайшей областью CloudHaskell для явных закрытий является пакет distributed-static. Другая попытка - HdpH closure representation. Тем не менее, оба используют шаблон Haskell в способе Thomas describes below.
Ограничение - это отсутствие статической поддержки в GHC, для которой в настоящее время действует без изменений GHC ticket. (Любые берущие?). В списке рассылки CloudHaskell было a discussion о том, какая статическая поддержка должна на самом деле выглядеть, но пока ничего не произошло, насколько я знаю.
Ближайшим, кто пришел к дизайну и реализации, является Йост Бертольд, который реализовал сериализацию функций в Эдеме. См. Его документ IFL 2010 "Orthogonal Serialisation for Haskell". Поддержка сериализации используется в системе исполнения Eden. (Теперь доступна как отдельная библиотека: packman. Не уверен, может ли он использоваться с GHC или нужен пропатченный GHC, как в вилке Eden ...). Что-то подобное было бы необходимо для GHC. Это поддержка сериализации Eden, в версии раздвоенной от GHC 7.4:
data Serialized a = Serialized { packetSize :: Int , packetData :: ByteArray# }
serialize :: a -> IO (Serialized a)
deserialize :: Serialized a -> IO a
Итак: один может сериализовать функции и структуры данных. Существует Binary
экземпляр для Serialized a
, что позволяет вам проверять долговременное вычисление на файл! (См. Раздел 4.1).
Поддержка такого простого API-интерфейса сериализации в базовых библиотеках GHC, несомненно, была бы святым Граалем для распределенного программирования Haskell. Это, скорее всего, упростить компонуемости между распределенными вкусами Haskell (CloudHaskell, MetaPar, HdpH, Eden и так далее ...)
См. Также [Haskell for all: Интернет кода] (http://www.reddit.com/r/haskell/comments/36d12v/haskell_for_all_the_internet_of_code/) для (теоретического) предложения о том, как кодировать функции для их отправки. –