Вопросы по теме 'applicative'
Аппликативы составляют, а монады - нет
Аппликативы составляют, а монады - нет.
Что означает вышеприведенное утверждение? А когда одно предпочтительнее другого?
13422 просмотров
schedule
11.12.2022
В чем практическое применение аппликативного стиля?
Я программист на Scala, сейчас изучаю Haskell. Легко найти практические примеры использования и примеры из реальной жизни для объектно-ориентированных концепций, таких как декораторы, шаблоны стратегии и т. Д. Этим наполнены книги и сети.
Я пришел...
7367 просмотров
schedule
06.05.2022
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 просмотров
schedule
14.06.2023
Доказательства применимого законодательства для экземпляров haskell
Доказано ли, что все экземпляры Haskell класса Applicative, которые мы получаем с платформой Haskell, удовлетворяют всем законам Applicative? Если да, то где мы можем найти эти доказательства?
Исходный код Control.Applicative , похоже, не...
548 просмотров
schedule
20.03.2024
Соответствие между классами типов и уровнями грамматики в иерархии Хомского
Мой вопрос касается классов типов Applicative и Monad, с одной стороны, и контекстно-свободных и контекстно-зависимых уровней грамматики иерархии Хомского, с другой.
Я слышал, что существует соответствие между классами типов и уровнями грамматики....
567 просмотров
schedule
11.07.2022
Избегайте сопоставления с образцом в рекурсии
Рассмотрим этот код, который я использовал для решения проблемы Эйлера 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 просмотров
schedule
04.09.2022
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 просмотров
schedule
06.05.2022
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 просмотров
schedule
02.12.2022
Различное поведение 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 просмотров
schedule
09.01.2023