YAML-RPC
Небольшая библиотека для организации RPC по TCP/IP с использованием YAML в качестве формата сериализации.
RPC-сервер должен предоставлять набор "RPC-методов", которые суть просто функции типа a -> IO b, где a,b принадлежат классу IsYamlObject. Этот класс гарантирует, что соответствующие значения могут быть сериализованы в YAML и десериализованы обратно. Модуль Network.YAML.Instances предоставляет инстанции этого класса для часто используемых типов. Кроме того, модуль Network.YAML.Derive содержит (TemplateHaskell-) функцию deriveIsYamlObject, которая позволяет легко создавать инстанции этого класса для почти любого ADT.
RPC-клиент вызывает RPC-методы в основном одним из двух способов. Первый способ состоит в вызове функции call (или callDynamic) из модуля Network.YAML.Caller. Этой функции передаётся имя метода. Другой способ состоит в том, чтобы при помощи (TemplateHaskell-) функции remote из модуля Network.YAML.WrapMethods объявить функции-обёртки для RPC-методов. Эти функции-обёртки имеют те же имена, что исходные функции, и ведут себя почти также, только в качестве первого параметра принимают пару: адрес RPC-сервера и номер порта.
Пример использования см. в файлах Test.hs, TestCall.hs. Haddock-документация вот. Страница на Hackage вот.
Depends: ghc >= 6.10, network, data-object, data-object-yaml, yaml, data-default.
