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

функции как аппликативные функторы (Haskell / LYAH)
Глава 11 книги Learn You a Haskell вводит следующее определение: instance Applicative ((->) r) where pure x = (\_ -> x) f <*> g = \x -> f x (g x) Здесь автор нехарактерно машет рукой («Реализация экземпляра для‹ *>...
4816 просмотров
schedule 08.03.2022

Разбирать текст фиксированной длины с attoparsec
Мне нужно разобрать поля фиксированной длины с помощью attoparsec, но сейчас я борюсь с компилятором. Я все еще новичок, приведенный ниже код - самое близкое решение, которое у меня есть: > {-# LANGUAGE OverloadedStrings #-} > import...
416 просмотров
schedule 20.09.2022

Примеры монады, аппликативная часть которой может быть лучше оптимизирована, чем монадная.
В одном из обсуждений я слышал, что Applicative интерфейс некоторых парсеров реализован иначе, более эффективно, чем их Monad интерфейс. Причина в том, что с Applicative мы знаем все «эффекты» заранее, до того, как будут выполнены все...
1237 просмотров
schedule 06.09.2022

Аппликативный и монадический стиль для простого примера ввода-вывода
Вот две очень простые функции f и g . {-# LANGUAGE ScopedTypeVariables #-} module Test where import Control.Applicative f :: IO () f = do y <- (<*>) (pure (show . (*10))) (read <$> readFile "data") writeFile "out" y g...
304 просмотров
schedule 20.02.2022

Как создать вложенную/условную опцию с помощью optparse-applicative?
Можно создать выражение haskell, используя методы в optparse-applicative , которые анализируют программу такие варианты? program [-a [-b]] ... -a и -b — это необязательные флаги (реализованные с помощью switch ) с ограничением,...
1011 просмотров

optparse-applicative
Я пытаюсь использовать библиотеку optparse-applicative в программе, которая должен выполнять разные действия в зависимости от количества аргументов. Например, разбор аргумента для программы, вычисляющей периметры: module TestOpts where...
305 просмотров

Понимание аппликативного стиля
Я хотел бы написать что-то вроде следующего: (+) <$> Just 3 <*> Just 5 <*>' (+) <*> Just 6 Однако проблема в том, что мне нужно как-то flip <*> . Каков идиоматический способ в Haskell сделать тип цепочки,...
100 просмотров
schedule 03.09.2022

Функция похожа на когда, но возвращает значение?
Есть ли способ написать это более кратко? У меня есть много функций, которые выглядят так. У каждого из них есть некоторое логическое условие, которое либо возвращает значение, либо Nothing rootMiddleware :: Application -> Application...
108 просмотров
schedule 24.03.2023

Снятая «если» -функция ведет себя неожиданно
в своей программе я использую функцию if' , определенную в одном из модулей, вместо встроенной конструкции if-then-else . Он определяется тривиально и отлично работает. Однако есть одно место в коде, где мне нужно применить его к значениям монад...
48 просмотров
schedule 29.07.2023

Почему экземпляр списка Applicative не выполняет взаимно однозначное приложение?
Я читал о Applicative в Haskell от Hutton's Programming in Haskell. Чтобы лучше понять это, я придумал следующее определение для Applicative для списков: -- Named as pure' and "app" to avoid confusion with builtin versions class Applicative'...
558 просмотров
schedule 07.11.2022

Stream, чтобы быть экземпляром traversable
Пакет vector-0.1 имеет довольно эффективную реализацию Stream ( Data.Vector.Stream ): data Step s a = Yield a s | Skip s | Done -- | The type of fusible streams data Stream a = forall s. Stream (s -> Step s...
221 просмотров
schedule 15.04.2024

Как сопоставить функции с RoseTree в Applicative (Haskell)?
Как применить аппликатив к RoseTree, т.е. вернуть дерево, состоящее из деревьев, созданных последовательным применением функций к начальным узлам. Вот код, который я написал: {-# LANGUAGE DeriveFunctor, InstanceSigs #-} data RoseTree a = Nil |...
770 просмотров
schedule 28.12.2022

Реализовать Applicative для пользовательского ZipList
Это взято из упражнения в книге Haskell from First Principles . Упражнение состоит в том, чтобы реализовать Applicative для ZipList' , что аналогично ZipList в Prelude. В книге есть такая подсказка Проверьте Prelude на наличие функций,...
193 просмотров

Нарушение законов об аппликативных функторах
Упражнения из онлайн-курса. Предположим, что для стандартного аппликативного функтора списка оператор <*> определен стандартным образом, а pure заменен на pure x = [x,x] Какие законы аппликативного класса типов будут нарушены?...
106 просмотров
schedule 03.02.2022

Как я могу обобщить арность функции Zip rxjava2 (от Single/Observable) до n необязательных аргументов без потери ее типов?
В связи с этим вопросом https://stackoverflow.com/questions я хочу добиться того же в Java с помощью rxJava2, что и в haskell Как реализовать обобщенный zipn и unzipn в Haskell? : В haskell я могу добиться этого с помощью аппликативных функторов:...
185 просмотров
schedule 11.03.2023

Scala, Cats, использование `ap`
Я прохожу через https://www.scala-exercises.org/ для кошек. Думаю, я понимаю, что значит Apply.ap . Но я не вижу в этом никакого применения. В чем разница между: Apply[Option].map(Some(1))(intToString) и...
82 просмотров

Действительно ли функциональная монада предлагает нечто большее, чем аппликативный функтор функции? Если да, то?
Что касается монады функций, я обнаружил, что (<*>) и _2 _ / _ 3_ имеют два поразительно похожих типа. В частности, (=<<) делает сходство более очевидным: (<*>) :: (r -> a -> b) -> (r -> a) -> (r -> b)...
917 просмотров