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

Как и почему ap определяется как идентификатор liftM2 в Haskell
Пытаясь лучше понять аппликатив, я посмотрел на определение ‹*>, которое, как правило, определяется как ap, которое, в свою очередь, определяется как: ap :: (Monad m) => m (a -> b) -> m a -> m b ap =...
1257 просмотров
schedule 07.03.2022

Есть ли понятные человеку названия для аппликативных (и дружественных) методов?
В последнее время я довольно часто использую аппликативный (и альтернативный), и одна вещь, которая меня расстраивает, - это мое незнание номенклатуры. В качестве примера я хотел бы иметь возможность сказать function name вместо star thing для...
615 просмотров
schedule 22.02.2023

Аппликативный без функтора
У меня есть тип Image , который в основном представляет собой c-массив с плавающей запятой. Легко создавать такие функции, как map :: (Float -> Float) -> Image -> Image или zipWith :: (Float -> Float -> Float) -> Image ->...
718 просмотров
schedule 31.07.2022

Haskell — Чем полезен Control.Applicative.Alternative?
Я искал класс Applicative в библиотеках Haskell и наткнулся на Alternative . Чем хорош этот класс? Поиск в гугле ничего особенно интересного не дал. И это, кажется, совершенно неуместно в комплекте с пакетом Applicative. Может ли кто-нибудь...
3584 просмотров

Хорошие примеры Not a Functor / Functor / Applicative / Monad?
Объясняя кому-то, что такое класс типа X, я изо всех сил пытаюсь найти хорошие примеры структур данных, которые в точности соответствуют X. Итак, прошу примеры: Конструктор типа, не являющийся функтором. Конструктор типа, который является...
16798 просмотров
schedule 12.07.2022

Монадический эквивалент аппликативного падежа ‹*
Прочитав ответ Энтони на вопрос синтаксического анализатора, связанный со стилем , я пытался убедить себя, что написание монадических синтаксических анализаторов все еще может быть довольно компактным. Итак, вместо reference :: Parser...
347 просмотров
schedule 17.09.2023

Может кто-нибудь объяснить, где в этом коде возникают экземпляры Applicative?
isAlphaNum :: Char -> Bool isAlphaNum = (||) <$> isAlpha <*> isNum Я вижу, что это работает, но я не понимаю, откуда берутся экземпляры Applicative (или Functor ).
862 просмотров
schedule 10.08.2022

аппликативное переписывание (Haskell)
Когда я не понимаю, как работает выражение в Haskell, мне часто помогает разложить его на более простую форму. Используя следующие определения sequenceA :: (Applicative f) => [f a] -> f [a] sequenceA [] = pure [] sequenceA (x:xs) = (:)...
285 просмотров
schedule 19.05.2023

Как аппликативные функторы связаны с алгоритмами распараллеливания? (Scala и Scalaz)
Из книги Джоша Суэрета «Глубокая Скала»: «Аппликативные функторы предоставляют способ взять два вычисления и соединить их вместе с помощью функции. Пример Traversable показывает, как две коллекции могут быть распараллелены в пары. Аппликативные...
1744 просмотров

Каков пример монады, которая является альтернативой, но не монадой плюс?
В его ответе на вопрос «Различие между классами типов MonadPlus , Alternative и Monoid ?» , — говорит Эдвард Кметт. Более того, даже если бы Applicative был суперклассом Monad , вам все равно бы понадобился класс MonadPlus , потому...
991 просмотров

эквивалентность аппликативного функтора и монады
Люди говорят, что монады - это расширение аппликативных функторов, но я этого не вижу. Возьмем пример аппликативного функтора: (<*>) :: f(a->b) -> f a -> f b [(+3)] <*> [2,3,4] Теперь я также ожидаю, что могу делать то...
1217 просмотров
schedule 28.02.2024

Сопоставление как минимум 1 из 3 регулярных выражений Scala с использованием аппликативного функтора
У меня есть три регулярных выражения Scala, которые мне нужно проверить, чтобы увидеть, соответствует ли какое-либо из них заданной строке. Я знаю, что могу сделать следующее: val matches = R1.findFirstIn(myString).isDefined ||...
224 просмотров
schedule 27.12.2022

Функторы и аппликативы для типов вида (* -› *) -› *
Я столкнулся с ситуацией, когда мой код выиграл бы от использования абстракций типа Functor и Applicative , но для типов вида (* -> *) -> * . Определение функтора высшего порядка можно выполнить с помощью RankNTypes следующим образом....
803 просмотров

Почему я не могу обобщить это с монады на аппликатив?
Я обобщил hoistFree из бесплатный пакет для hoistFreeM аналогично тому, как можно обобщить fmap для Data.Traversable.mapM . import Control.Monad import Control.Monad.Free import Data.Traversable as T hoistFreeM :: (Traversable g,...
261 просмотров
schedule 26.07.2022

optparse-applicative: отображение справки для программ, запущенных без аргументов
Я использую optparse-applicative версии 0.7.0.2. Я хочу написать синтаксический анализатор, который принимает некоторые обязательные параметры, но при вызове без параметров показывает и использование , и справку, а не только использование (то...
798 просмотров

Как лучше написать [(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1), (1,0),(1,1)] в Haskell?
Я столкнулся с несколькими ситуациями, когда мне нужен список: [(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)] -- no (0,0) Обратите внимание, что в списке нет (0,0). Я использую кортежи (dx,dy) для поиска вверх, вниз, влево, вправо и...
1033 просмотров
schedule 22.04.2022

Аппликативный экземпляр для бесплатной монады
Пытаясь найти монаду haskell, которая может выполняться поэтапно / разрешает многопоточность, я обнаружил бесплатную монаду data Free f a = Return a | Roll (f (Free f a)) со своим экземпляром монады instance (Functor f) => Monad (Free...
952 просмотров
schedule 02.11.2022

Аппликативный пример для MaybeT m предполагает Monad m
Я использовал монаду Haxl (описанную здесь: http://www.reddit.com/r/haskell/comments/1le4y5/the_haxl_project_at_facebook_slides_from_my_talk ), который имеет интересную особенность, заключающуюся в том, что <*> для его экземпляра...
499 просмотров

немонадическая обработка ошибок в Haskell?
Мне было интересно, есть ли элегантный способ немонадической обработки ошибок в Haskell, который синтаксически проще, чем использование простого Maybe или Either . Я хотел иметь дело с исключениями, не связанными с вводом-выводом, такими как...
700 просмотров

scalaz с использованием reduceLeft для аппликативного компоновщика
Я немного смущен |@| магия в скалазе. Вот мой код: def isThree(x: Int): Validation[NonEmptyList[String], Int] = if (x!= 3){("failed: %d" format x).wrapNel.failure} else {x.success} println((isThree(6) |@| isThree(7) |@| isThree(13) )...
492 просмотров
schedule 18.12.2022