Я могу заставить подписчика ZMQ работать в Haskell, но был бы признателен за руководство о том, как использовать эти данные с Pipes. Моя попытка написать Producer терпит неудачу при «сборке стека» со следующей ошибкой:
Не удалось сопоставить тип «Proxy X () c'0 c0 (ZMQ z)» с «ZMQ z»
Ожидаемый тип: ZMQ z ()
Фактический тип: Прокси X () c'0 c0 (ZMQ z) ()
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Monad
import Pipes
import qualified Pipes.Prelude as P
import System.ZMQ4.Monadic
import qualified Data.ByteString.Char8 as CS
fromZMQ :: (Receiver r) => Socket z r -> Producer String (ZMQ z) ()
fromZMQ sock = do
msg <- lift $ receive sock
yield (CS.unpack msg)
fromZMQ sock
main :: IO ()
main = --do
runZMQ $ do
subSock <- socket Sub ---subscriptionSocket
subscribe subSock ""
connect subSock "tcp://127.0.0.1:4998"
forever $ fromZMQ subSock >-> P.take 3 >-> P.print
Обратите внимание: я хочу использовать данные, публикуемые в ZMQ, с помощью скрипта Python.