Я начинаю с 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 в вышеприведенном примере?