Nik*_*kov 4 haskell haskell-pipes
我需要组合一个消费者和一个管道,以便消费者的输出将输入管道的输入.
我想这可以用这样的组合器来解决:
Consumer i m r -> (r -> Producer o m r') -> Pipe i o m r'
Run Code Online (Sandbox Code Playgroud)
或这个:
Consumer i m i' -> Pipe i' o m r -> Pipe i o m r
Run Code Online (Sandbox Code Playgroud)
或者如下所示的提升功能:
Consumer i m r -> Pipe i o m r
Run Code Online (Sandbox Code Playgroud)
或者像这样:
Consumer i m o -> Pipe i o m r
Run Code Online (Sandbox Code Playgroud)
我试过consumer >~ pipe没有成功.那么如何处理呢?
对于你的第一个类型的签名,如果你Consumer和Producer使用多态类型同义词Consumer'和Producer',然后Combinator的你想要的是(>>=):
(>>=) :: Pipe i o m r -> (r -> Pipe i o m r') -> Pipe i o m r'
Run Code Online (Sandbox Code Playgroud)
一个Consumer' i m r将类型检查作为Pipe i o m r.同样,Producer' o m r'将类型检查作为Pipe i o m r'.