Создайте произвольный класс в Scala как экземпляр монады

Чтобы сделать что-либо работоспособным в контексте монады, если вы используете Haskell - я просто добавляю реализацию класса Monad для данного типа в любом месте. Так что я невообще не трогайте источник определения типа данных. Нравится (что-то искусственное)

data Z a = MyZLeft a | MyZRight a

swap (MyZLeft x) = MyZRight x
swap (MyZRight x) = MyZLeft x

instance Monad Z where
  return a = MyZRight a
  (>>=) x f = case x of
                MyZLeft s -> swap (f s)
                MyZRight s -> swap (f s)

так что я'не касаясь определения Z, но сделайте его монадой

Как мне сделать это в Scala? Кажется, чтоНет никакого способа, кроме как смешать некоторые черты и определить методы map / flatMap / filter / withFilter? I '

Ответы на вопрос(3)

Ваш ответ на вопрос