Вопросы по теме 'applicative'

Аппликативы составляют, а монады - нет
Аппликативы составляют, а монады - нет. Что означает вышеприведенное утверждение? А когда одно предпочтительнее другого?
13422 просмотров

В чем практическое применение аппликативного стиля?
Я программист на Scala, сейчас изучаю Haskell. Легко найти практические примеры использования и примеры из реальной жизни для объектно-ориентированных концепций, таких как декораторы, шаблоны стратегии и т. Д. Этим наполнены книги и сети. Я пришел...
7367 просмотров

F# Сортировка массива кортежей
let standard = (0, 4.5M, 4L) let tuples = [| ("A", -2, 1.0M, 2L); ("B", -1, 2.0M, 3L); ("C", 0, 3.0M, 4L); ("D", 1, 4.0M, 5L); ("E", 2, 5.0M, 6L) |] let qualified = tuples...
1437 просмотров
schedule 28.04.2022

Почему экземпляр Applicative для Maybe не дает Nothing, если функция Nothing в ‹*›
Я новичок в haskell и читаю книгу «Научитесь хаскеллу». Я уже некоторое время пытаюсь переварить функторы и аппликативные функторы. В теме о прикладных функторах реализация экземпляра для Maybe дается как instance Applicative Maybe where...
1536 просмотров
schedule 10.06.2023

Как составить функцию для аппликативов с помощью scalaz
Изучая Scalaz 6 , я пытаюсь написать безопасные для типов средства чтения, возвращающие проверки. Вот мои новые типы: type ValidReader[S,X] = (S) => Validation[NonEmptyList[String],X] type MapReader[X] = ValidReader[Map[String,String],X]...
1385 просмотров
schedule 15.06.2022

Как объединить Futures разных типов в одно Future без использования zip ()
Я хочу создать будущее типа Future[(Class1,Class2,Class3)] из кода ниже. Однако я нашел единственный способ сделать это - использовать zip (). Я считаю решение некрасивым и не оптимальным. Может кто-нибудь просветил меня. val v = for ( a...
8293 просмотров
schedule 27.07.2023

отключение полей в формлетах/пищеварительных функторах?
С формлетами/пищеварительными функторами я пытаюсь понять, как выборочно отключать поля во время выполнения. Отключение поля приведет к отключению как отображения поля, так и проверки. Надуманный пример: предположим, что наш базовый тип данных...
114 просмотров

Доказательства применимого законодательства для экземпляров haskell
Доказано ли, что все экземпляры Haskell класса Applicative, которые мы получаем с платформой Haskell, удовлетворяют всем законам Applicative? Если да, то где мы можем найти эти доказательства? Исходный код Control.Applicative , похоже, не...
548 просмотров
schedule 20.03.2024

Соответствие между классами типов и уровнями грамматики в иерархии Хомского
Мой вопрос касается классов типов Applicative и Monad, с одной стороны, и контекстно-свободных и контекстно-зависимых уровней грамматики иерархии Хомского, с другой. Я слышал, что существует соответствие между классами типов и уровнями грамматики....
567 просмотров

Избегайте сопоставления с образцом в рекурсии
Рассмотрим этот код, который я использовал для решения проблемы Эйлера 58: diagNums = go skips 2 where go (s:skips) x = let x' = x+s in x':go skips (x'+1) squareDiagDeltas = go diagNums where go xs = let (h,r) =...
246 просмотров
schedule 16.03.2023

Моноидальные функторы Лакса с другой моноидальной структурой
Аппликативные функторы хорошо известны и любимы среди хаскеллеров за их способность применять функции в эффективном контексте. В терминах теории категорий можно показать, что методы Applicative : pure :: a -> f a (<*>) :: f (a ->...
1586 просмотров

Scalaz переворачивает вложенные экзистенциальные/проверочные моно-независимо-нады вокруг предварительного построения приложений
У меня есть следующее: gt.map(_.singleVal) |@| lt.map(_.singleVal) Они имеют тип Option(Validation(T)) , но должны быть Validation(Option(T)) Это нормально, что что-то не существует, но не нормально, что то, что существует,...
146 просмотров
schedule 06.06.2023

Понимание системы типов Haskell в контексте приложений
Я играю с Control.Applicative и понимаю, что не все понимаю в системе типов Haskell. Вот мой эксперимент в Ghci: λ :t (<*>) (<*>) :: Applicative f => f (a -> b) -> f a -> f b λ :t (<*>) (pure 2) (<*>)...
86 просмотров
schedule 22.02.2024

Пример аппликативной композиции в Scala
Это продолжение моих старых вопросов : Я знаю, что монады не компонуемы, т. е. если M1[_] и M2[_] являются монадами, то M2[M1[_]] не обязательно является монадой. Например, List[Int] и Option[Int] являются монадами, но...
454 просмотров
schedule 05.01.2023

Как определить ‹*› для Option[List[_]] n Scala
Это продолжение моего предыдущего вопроса с примером, найденным в Интернете. Предположим, я определяю класс типов Applicative следующим образом: trait Functor[T[_]]{ def map[A,B](f:A=>B, ta:T[A]):T[B] } trait Applicative[T[_]] extends...
112 просмотров
schedule 02.01.2023

Параллели типов произведения и суммы в классах типов Haskell
Похоже, что такие классы типов, как Applicative , Monad и Arrow имеют своего рода эквивалент типа суммы в классах типов, таких как Альтернативный , MonadPlus и ArrowPlus соответственно. Например, Applicative и Alternative можно использовать...
321 просмотров

optparse-applicative: как справиться с ситуацией без аргументов в синтаксисе Arrow
Пример: https://github.com/pcapriotti/optparse-applicative/blob/master/tests/Examples/Cabal.hs#L46-L62 parser :: Parser Args parser = runA $ proc () -> do opts <- asA commonOpts -< () cmds <- (asA . hsubparser) (...
436 просмотров

Различное поведение Applicative для кортежей и списков в Haskell
Например, -- Num a => ([Char], a -> a) <*> ([Char], a) > ("hello ",(*6)) <*> ("world",7) ("hello world",42) -- Num a => [a -> a] <*> [a] > [(*7),(*6)] <*> [6,7] [42,49,36,42] -- Num a => [[Char], a...
614 просмотров
schedule 01.10.2022

Аппликативная реализация Const Monoid
instance Monoid m => Applicative (Const m) where pure _ = Const mempty Const f <*> Const v = Const (f `mappend` v) Я не понимаю, как определение типа <*> может проверять тип. С левой стороны f ограничивается...
208 просмотров
schedule 25.02.2023

Как накапливать Throwable в scalaz`е/нотации
Предположим, что у меня есть два списка результатов вычислений val a: List[ Throwable \/ A] = ... val b: List[ Throwable \/ B] = ... и у меня есть функция, которая вычисляет конечный результат, например def calc(a: A, b: B): Throwable \/...
193 просмотров