applicative- все статьи тега
Я думаю, что есть несоответствие типов в определении по умолчанию в Примере Applicative, возможно, в Haskell
В настоящее время я изучаю Хаскелла с профессором Хаттоном "программирование в Хаскелле", и я обнаружил кое-что странное относительно определения возможно как экземпляра класса Applicative. В GHC.Base экземпляр Applicative Maybe определяется следующим образом: instance Applicative Maybe where pure = Just Just f <*> m = fmap f m Nothing <*> _m = Nothing Меня беспокоит строка, которая определяет значение Nothing <*> _ как Nothing. Nothing имеет тип Maybe ...
Различие между типами monadplus, Alternative и Monoid?
стандартная библиотека Haskell typeclasses MonadPlus,Alternative и Monoid каждый предоставляет два метода с практически одинаковой семантикой: пустое значение: mzero,empty или mempty. оператор a -> a -> a что объединяет значения в классе вместе:mplus,<|> или mappend. все три закона указывают, каких инстанций следует придерживаться: mempty `mappend` x = x x `mappend` mempty = x таким образом, кажется, три классов типов являются обеспечение то же самое методы. (Alternative пред ...
Когда и почему следует использовать аппликативные функторы в Scala
Я знаю, что Monad может быть выражено в Scala следующим образом: trait Monad[F[_]] { def flatMap[A, B](f: A => F[B]): F[A] => F[B] } Я вижу, почему это полезно. Например, даны две функции: getUserById(userId: Int): Option[User] = ... getPhone(user: User): Option[Phone] = ... Я могу легко написать функцию getPhoneByUserId(userId: Int) С Option - это монада: def getPhoneByUserId(userId: Int): Option[Phone] = getUserById(userId).flatMap(user => getPhone(user)) ... теперь я в ...
Что делает оператор Haskell?
прохождение документации Haskell всегда немного больно для меня, потому что вся информация, которую вы получаете о функции, часто не более чем: f a -> f [a] что может означать любое количество вещей. как и в случае . все, что мне дано, это:(<|>) :: f a -> f a -> f a и вот это "ассоциативная бинарная операция"... при осмотре Control.Applicative я узнаю, что он делает, казалось бы, несвязанные вещи, в зависимости от по реализации. instance Alternative Maybe where empty = Not ...