Сообщение Re[3]: Вопрос по Haskell от 03.09.2019 14:16
Изменено 03.09.2019 14:17 Буравчик
Re[3]: Вопрос по Haskell
Здравствуйте, Shmj, Вы писали:
S>Так что не вводите в заблуждение.
Да, затупил, с утра пораньше.
Как уже сказали, для Monad нужен Applicative, а для него, в свою очередь, нужен Functor
S>Пока рабочего примера нет
Итого, полный код таков:
S>Так что не вводите в заблуждение.
Да, затупил, с утра пораньше.
Как уже сказали, для Monad нужен Applicative, а для него, в свою очередь, нужен Functor
S>Пока рабочего примера нет
Итого, полный код таков:
data Maybe2 a = Just2 a | Nothing2
instance Functor Maybe2 where
fmap _ Nothing2 = Nothing2
fmap f (Just2 a) = Just2 (f a)
instance Applicative Maybe2 where
pure = Just2
Just2 f <*> m = fmap f m
Nothing2 <*> _m = Nothing2
Just2 _m1 *> m2 = m2
Nothing2 *> _m2 = Nothing2
instance Monad Maybe2 where
return x = Just2 x
Nothing2 >>= f = Nothing2
Just2 x >>= f = f x
fail _ = Nothing2
Re[3]: Вопрос по Haskell
Здравствуйте, Shmj, Вы писали:
S>Так что не вводите в заблуждение.
Да, затупил, с утра пораньше. В реализации операции >>= нет ошибки.
Но, как уже сказали, для Monad нужен Applicative, а для него, в свою очередь, нужен Functor
S>Пока рабочего примера нет
Итого, полный код таков:
S>Так что не вводите в заблуждение.
Да, затупил, с утра пораньше. В реализации операции >>= нет ошибки.
Но, как уже сказали, для Monad нужен Applicative, а для него, в свою очередь, нужен Functor
S>Пока рабочего примера нет
Итого, полный код таков:
data Maybe2 a = Just2 a | Nothing2
instance Functor Maybe2 where
fmap _ Nothing2 = Nothing2
fmap f (Just2 a) = Just2 (f a)
instance Applicative Maybe2 where
pure = Just2
Just2 f <*> m = fmap f m
Nothing2 <*> _m = Nothing2
Just2 _m1 *> m2 = m2
Nothing2 *> _m2 = Nothing2
instance Monad Maybe2 where
return x = Just2 x
Nothing2 >>= f = Nothing2
Just2 x >>= f = f x
fail _ = Nothing2