Avatar
Haskell class Eq a where (==) :: a -> a -> Bool class Monad m where (>>=) :: m a -> (a -> m b) -> m b (edited)
9:15 AM
Swift protocol Equatable { static func ==(lhs: Self, rhs: Self) -> Bool } protocol Monad { ??? // どんな記法が馴染む? }
9:20 AM
つまり、 Haskell では( Swift の言葉で言うと)プロトコルを一度別の記号 am に読み替えているから自然に書けるけど、 Swift ではそれを Self で表しているのでジェネリックにしたときにどう書いていいのか。 Self が Haskell の Monadm じゃなくて m a を表してしまっているので m b をうまく書けない・・・。