Я новичок в haskell и читаю книгу Learn you a haskell. Я уже некоторое время пытаюсь переварить функторы и аппликативные функторы.
В теме аппликативных функторов реализация экземпляра для Maybe
задается как
instance Applicative Maybe where
pure = Just
Nothing <*> _ = Nothing
(Just f) <*> something = fmap f something
Итак, насколько я понимаю, мы получаем Nothing
, если левосторонний функтор (для <*>
) Ничего. Мне кажется, что это имеет больше смысла как
Nothing <*> something = something
, так что этот аппликативный функтор не действует. Каков вариант использования, если он есть, для выдачи Nothing
?
Скажем, у меня есть Maybe String
, значение которой я не знаю. Я должен передать это Maybe
сторонней функции, но хочу, чтобы ее результат сначала прошел через несколько Maybe (a -> b)
. Если некоторые из этих функций Nothing
, я хочу, чтобы они молча возвращали свой ввод, а не выдавали Nothing
, что означает потерю данных.
Итак, какова логика возврата Nothing
в приведенном выше примере?