class Eq a where (==) :: a -> a -> Bool class Monad m where (>>=) :: m a -> (a -> m b) -> m b
(edited)protocol Equatable { static func ==(lhs: Self, rhs: Self) -> Bool } protocol Monad { ??? // どんな記法が馴染む? }
a
や m
に読み替えているから自然に書けるけど、 Swift ではそれを Self
で表しているのでジェネリックにしたときにどう書いていいのか。 Self
が Haskell の Monad
の m
じゃなくて m a
を表してしまっているので m b
をうまく書けない・・・。