Имея производителя типа Producer ByteString IO ()
и канал типа Pipe ByteString a IO ()
, как мне составить эффект, который при запуске приведет к IO a
?
Вот моя лучшая попытка:
{-# LANGUAGE ScopedTypeVariables #-}
import Pipes
import Data.ByteString
run :: forall a. IO a
run = runEffect $
(undefined :: Producer ByteString IO ()) >-> (undefined :: Pipe ByteString a IO ())
Это не удается со следующим:
Couldn't match type `Void' with `()'
Expected type: IO a
Actual type: IO ()
In the expression:
runEffect
$ (undefined :: Producer ByteString IO ())
>-> (undefined :: Pipe ByteString a IO ())
In an equation for `run':
run
= runEffect
$ (undefined :: Producer ByteString IO ())
>-> (undefined :: Pipe ByteString a IO ())
Void
и()
, ноVoid
не появляется в ожидаемом типе. - person Daniel Wagner   schedule 17.10.2013Void
появляется в подписиEffect
введите псевдоним. По поводу кода и ошибки - смотрите обновления. - person Nikita Volkov   schedule 17.10.2013