2009-01-30 5 views
21
class (Monoid w, Monad m) => MonadWriter w m | m -> w where 
    pass :: m (a,w -> w) -> m a 
    listen :: m a -> m (a,w) 
    tell :: w -> m() 

Was bedeutet die obige Pipe? Das Snippet kommt von here.Was bedeutet eine Pipe in einer Klassendefinition?

+1

mögliches Duplikat von [Was ist das "|" für in einer Haskell-Klassendefinition?] (http://stackoverflow.com/questions/2675655/whats-the-for-in-a-haskell-class-definition) –

Antwort

22

Eigentlich ist es ein "functional dependency". In diesem Fall bedeutet das, dass mw eindeutig identifiziert - der Typ m bestimmt den Typ w. (This kann eine bessere Verbindung sein.)