창조되고 한 가지로 돌아 다니는가?하스켈 기록 기능 제약
그것은 구성상의 이유로 유용 할 것 같습니다 예를 들어, 나는
내가 녹음 기능에 제약이 없기 때문에 그것은 작동하지 않습니다(:+:) :: SinkBuilder -> SinkBuilder -> SinkBuilder
a :+: b = SinkBuilder $ do
sa <- openSink a
sb <- openSink b
return $ Sink (\v -> writeSink sa >> writeSink sb) (closeSink sa >> closeSink sb)
같은 것을 구현할 수 있지만, 그것은 또한 매우 매우 추한 외모 나는 그것을하는 훨씬 더 좋은 방법이 있어야한다고 확신한다.
'MonadIO m => m 싱크'가 'IO 싱크'와 동일하지 않습니까? – Michael
@Michael 나는 'm'이 보편적으로 정량화된다면 그것들이 동등하다고 생각한다. – chi
그다지 동등하지 않습니다. 저는 MonadIO 인 자체 모나드를 가지고 있습니다. 또한 제약 조건이 더 필요했습니다. 예를 들어'(MonadIO m, MonadState MyState m) => ... ' –