Описание тега applicative

В Haskell аппликативные функторы - это функторы, такие, что два функториальных значения могут быть объединены в одно, в то время как два значения внутри объединяются посредством функционального приложения. Аппликативный функтор имеет больше структуры, чем функтор, но меньше, чем монада.
2 ответа

Анализ аппликативных функторов

Я пытался узнать о статическом анализе аппликативных функторов. Многие источники говорят, что преимуществом их использования по сравнению с монадами является склонность к статическому анализу. Однако единственный пример, который я могу найти для вып…
15 дек '13 в 02:54
1 ответ

Соответствие по крайней мере 1 из 3 регулярных выражений Scala с использованием аппликативного функтора

У меня есть три регулярных выражения Scala, которые мне нужно проверить, чтобы убедиться, что любое из них соответствует заданной строке. Я знаю, что могу сделать следующее: val matches = R1.findFirstIn(myString).isDefined || R2.findFirstIn(myString…
14 дек '12 в 17:10
1 ответ

Ошибка при определении Applicative <*> с аксессорами записей: невозможно создать бесконечный тип: t ~ t -> t1

У меня есть следующий код: {-# LANGUAGE DeriveFunctor #-} data Foo a = Foo { field1 :: a, field2 :: a} deriving (Functor) instance Applicative Foo where pure a = Foo a a f &lt;*&gt; a = Foo (r field1) (r field2) where r g = g f $ g a Я получаю следу…
23 фев '17 в 19:29
1 ответ

Пример Haskell, где чистый и возврат не взаимозаменяемы

Хаскелла pure функционировать так же, как return? Я просто могу сделать тип экземпляром Monad, если это уже экземпляр Applicative, верно? Так что мне интересно, что Applicative pure всегда взаимозаменяемы с монадой return? Есть ли пример, где они не…
18 фев '19 в 15:42
1 ответ

Универсальная конвертация контейнеров? если из складного в альтернативу?

За instance Alternative [], (&lt;|&gt;) = (++), Так я считала (&lt;|&gt;) как своего рода монтажное устройство, в результате чего получается практически универсальный контейнерный преобразователь: -- (&lt;|&gt;) = generalization of (++) (&lt;|) :: A…
08 фев '18 в 08:14
0 ответов

Haskell Data.Sequence - нет экземпляра для (Applicative Seq)

Изменить: Извините, просто глупость с моей стороны. Я использую платформу 7.6.3, но читаю онлайн-документы для "последних", и я просто сделал это: &gt;:i Seq newtype Seq a = Data.Sequence.Seq (Data.Sequence.FingerTree (Data.Sequence.Elem a)) -- Defi…
07 янв '15 в 17:03
1 ответ

Haskell - Использование State с Альтернативой

У меня есть тип данных, который выглядит следующим образом: type Parser a = ExceptT ParseError (State [Token]) a А также функции манипулирования состоянием: consumeToken :: Parser Token consumeToken = do toks &lt;- lift get if null toks then throwE …
03 апр '18 в 09:04
1 ответ

Почему <*> экземпляра Const принимает два нефункциональных значения?

(&lt;*&gt;) :: Applicative f =&gt; f (a -&gt; b) -&gt; f a -&gt; f b Const :: a -&gt; Const a b Monoid m =&gt; Applicative (Const * m) Const "a" &lt;*&gt; Const "b" -- yields Const "ab" Const a &lt;*&gt; Const a = Const a &lt;&gt; Const a Я предпола…
30 май '17 в 09:03
2 ответа

Почему импорт Control.Applicative позволяет этому плохому коду проверять тип?

Я помогаю другу изучать Haskell, и он недавно создал такой код, который проверяет тип и создает цикл записи ЦП во время выполнения. Я полностью сбит с толку этим. import Control.Monad import Control.Applicative main = forever putStrLn "Hello, infini…
17 мар '12 в 20:20
1 ответ

Аппликативный экземпляр для MaybeT m предполагает Monad m

Я использую Haxl монада (описана здесь: http://www.reddit.com/r/haskell/comments/1le4y5/the_haxl_project_at_facebook_slides_from_my_talk), которая имеет интересную особенность, которая &lt;*&gt; для его Applicative экземпляр не совпадает с ap из Con…
1 ответ

Haskell: некоторые и многие

Что some а также many в Control.Applicative.Alternative хорош для? Если я напишу что-то вроде some $ Just 42кажется, вызывает бесконечную рекурсию, которая кажется не очень полезной...
30 апр '11 в 11:44
2 ответа

Частично применить mplus для перезаписи функции в стиле без точек

Я прохожу некоторые уроки по Haskell и пытаюсь познакомиться с языком. Я видел этот пример в учебнике Monad/MonadPlus: data Sheep = Sheep {name :: String, mother :: Maybe Sheep, father :: Maybe Sheep} parent :: Sheep -&gt; Maybe Sheep parent s = mot…
10 июн '13 в 17:49
2 ответа

Haskell Applicative [], почему я не могу заменить pure[] на [] в функции?

ghci&gt; :t pure [] pure [] :: Applicative f =&gt; f [a] ghci&gt; pure [] [] ghci&gt; :t [] [] :: [a] ghci&gt; fmap ((:) 2) (pure []) [2] ghci&gt; fmap ((:) 2) ([]) [] Я бы подумал заменить pure[] с [] в fmap ((:) 2) (pure []) приведет к тому же рез…
05 апр '14 в 08:08
1 ответ

Парсер Haskell, Monad и MonadPlus

module Parser where import Control.Monad (MonadPlus, mplus, mzero) import Tagger (Tag, Token) newtype Parser a = Parser ([(Token, Tag)] -&gt; [(a, [(Token, Tag)])]) parse :: Parser a -&gt; [(Token, Tag)] -&gt; [(a, [(Token, Tag)])] parse (Parser p)…
30 мар '16 в 14:26
1 ответ

Как <*> работает с Function Applicative?

Я пытаюсь выяснить с помощью лямбда-исчисления, почему функция результат следующего кода (,) &lt;$&gt; (+1) &lt;*&gt; (+1) имеет тип Num a => a -> (a, a) вместо Num a => a -> a -> (a, a) Это то, что у меня есть, я делаю что-то ужасно неправильно или…
20 дек '16 в 10:06
2 ответа

Почему экземпляры соответствуют только их головам?

Начну с конкретной проблемы (ребята из Stackru, как это). Скажем, вы определяете простой тип data T a = T a Этот тип Functor, Applicative и Monad, Игнорируя автоматическое получение, чтобы получить эти экземпляры, вы должны написать каждый из них, д…
14 май '15 в 23:26
2 ответа

Функция подъема `a → b → c` в`[a] → [b] → [[c]]`

Я хотел бы иметь функцию foo :: (a → b → c) → [a] → [b] → [[c]] это берет функцию f :: a → b → c и два списка xs а также ys и возвращает сетку (то есть список списков), содержащий значения f применяется к каждой комбинации значений из xs а также ys,…
24 ноя '15 в 11:31
4 ответа

Почему экземпляр Applicative для Maybe может ничего не давать, когда функция имеет значение Nothing в <*>

Я новичок в haskell и читаю книгу "Learn you a haskell". Я уже некоторое время пытаюсь переварить функторы и аппликативные функторы. В теме аппликативных функторов реализация экземпляра для Maybe дается как instance Applicative Maybe where pure = Ju…
25 дек '11 в 03:36
3 ответа

Mappend (a1,b1) и (a2,b2) в (a1+a2, b1+b2)

Я помню, что это очень просто, и может быть просто сделано с сопоставлением с образцом даже через лямбда-подобие (\a b -&gt; (fst a + fst b, snd a + snd b) ) (1,2) (3,4), Тем не менее, я думаю, что в стандартной библиотеке Haskell должны быть способ…
27 апр '17 в 20:30
1 ответ

Насколько действительно аппликативно применять, а не "комбинировать"?

Для распространения неопределенности Approximate типа, я хотел бы иметь экземпляры для Functor через Monad, Это, однако, не работает, потому что мне нужна структура векторного пространства для содержащихся типов, поэтому на самом деле это должны быт…