Описание тега 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 <*> 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 [], (<|>) = (++), Так я считала (<|>) как своего рода монтажное устройство, в результате чего получается практически универсальный контейнерный преобразователь: -- (<|>) = generalization of (++) (<|) :: A…
08 фев '18 в 08:14
0
ответов
Haskell Data.Sequence - нет экземпляра для (Applicative Seq)
Изменить: Извините, просто глупость с моей стороны. Я использую платформу 7.6.3, но читаю онлайн-документы для "последних", и я просто сделал это: >: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 <- lift get if null toks then throwE …
03 апр '18 в 09:04
1
ответ
Почему <*> экземпляра Const принимает два нефункциональных значения?
(<*>) :: Applicative f => f (a -> b) -> f a -> f b Const :: a -> Const a b Monoid m => Applicative (Const * m) Const "a" <*> Const "b" -- yields Const "ab" Const a <*> Const a = Const a <> 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), которая имеет интересную особенность, которая <*> для его Applicative экземпляр не совпадает с ap из Con…
30 мар '14 в 21:48
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 -> Maybe Sheep parent s = mot…
10 июн '13 в 17:49
2
ответа
Haskell Applicative [], почему я не могу заменить pure[] на [] в функции?
ghci> :t pure [] pure [] :: Applicative f => f [a] ghci> pure [] [] ghci> :t [] [] :: [a] ghci> fmap ((:) 2) (pure []) [2] ghci> 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)] -> [(a, [(Token, Tag)])]) parse :: Parser a -> [(Token, Tag)] -> [(a, [(Token, Tag)])] parse (Parser p)…
30 мар '16 в 14:26
1
ответ
Как <*> работает с Function Applicative?
Я пытаюсь выяснить с помощью лямбда-исчисления, почему функция результат следующего кода (,) <$> (+1) <*> (+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 -> (fst a + fst b, snd a + snd b) ) (1,2) (3,4), Тем не менее, я думаю, что в стандартной библиотеке Haskell должны быть способ…
27 апр '17 в 20:30
1
ответ
Насколько действительно аппликативно применять, а не "комбинировать"?
Для распространения неопределенности Approximate типа, я хотел бы иметь экземпляры для Functor через Monad, Это, однако, не работает, потому что мне нужна структура векторного пространства для содержащихся типов, поэтому на самом деле это должны быт…
29 ноя '12 в 12:31