Единственная проблема в вашем коде - последняя строка.
У вас там есть "труба":
fromZMQ subSock >-> P.take 3 >-> P.print :: Effect (ZMQ z) ()
и при применении к нему forever
тип остается прежним. Но что вам нужно, так это простой ZMQ z
, другими словами, вам нужно выполнить вычисления pipes
, и вы используете для этого функцию runEffect
. Как примечание: вам действительно не нужен forever
, так как поток никогда не закончится.
Итак, все, что вам действительно нужно сделать, это заменить forever
на runEffect
в последней строке.