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