Вопросы по теме '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 просмотров
schedule
19.02.2023
optparse-applicative
Я пытаюсь использовать библиотеку optparse-applicative в программе, которая должен выполнять разные действия в зависимости от количества аргументов.
Например, разбор аргумента для программы, вычисляющей периметры:
module TestOpts where...
305 просмотров
schedule
14.11.2023
Понимание аппликативного стиля
Я хотел бы написать что-то вроде следующего:
(+) <$> 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 просмотров
schedule
27.03.2024
Нарушение законов об аппликативных функторах
Упражнения из онлайн-курса.
Предположим, что для стандартного аппликативного функтора списка оператор <*> определен стандартным образом, а 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 просмотров
schedule
14.12.2022
Действительно ли функциональная монада предлагает нечто большее, чем аппликативный функтор функции? Если да, то?
Что касается монады функций, я обнаружил, что (<*>) и _2 _ / _ 3_ имеют два поразительно похожих типа. В частности, (=<<) делает сходство более очевидным:
(<*>) :: (r -> a -> b) -> (r -> a) -> (r -> b)...
917 просмотров
schedule
10.03.2022