Описание тега free-monad
Бесплатные монады дают общий способ превращения функторов в монады. Они полезны для многих древовидных структур и языков, специфичных для предметной области.
0
ответов
Как использовать Free с парами в fs2?
Допустим, я хочу прочитать данные из jms, отобразить их через toUpperCase и отправить в другое место. Поэтому я абстрагируюсь от реальной системы обмена сообщениями с Jms[A], право? trait Jms[A] case object Pull extends Jms[String] case class Push(s…
11 ноя '16 в 10:00
3
ответа
Условное поведение со свободными монадами
Я следую учебному пособию здесь: http://typelevel.org/cats/datatypes/freemonad.html и пытаюсь изменить его для работы с кешем перед хранилищем значений ключей. Это то, что я придумал до сих пор, но я получаю ошибку компилятора с valueGetOperation, Я…
15 янв '17 в 09:41
1
ответ
Есть ли инъекционный эквивалент для Haskell в контексте свободных монад
Я пытаюсь перевести это Скала cats пример о создании бесплатных монад. Суть этого примера заключается в разложении отдельных задач на отдельные типы данных: data Interact a = Ask (String -> a) | Tell String a deriving (Functor) data DataOp = AddC…
18 ноя '17 в 15:26
1
ответ
Изучение связующей структуры в свободной монаде АСТ
Возьмите этот простой базовый функтор и другие механизмы для бесплатной монады с обязательными условиями: {-# LANGUAGE DeriveFunctor #-} import Control.Monad.Free data ProgF r = FooF (Double -> r) | BarF Double (Int -> r) | EndF deriving Funct…
18 сен '15 в 04:24
1
ответ
Существует ли Coadsity MonadPlus, который асимптотически оптимизирует последовательность операций MonadPlus?
Недавно возник вопрос о связи между DList <-> [] против Codensity <-> Free, Это заставило меня задуматься, есть ли такая вещь для MonadPlus, Codensity Монада улучшает асимптотику только для монадических операций, а не для mplus, Более того, пока ран…
27 авг '15 в 14:35
1
ответ
Как использовать бесплатную монаду с Future[M[_]]
Я реализовал простой язык для процесса ETL, используя свободную монаду. Когда используешь List в качестве ввода и вывода для извлечения и хранения данных все работает нормально. Однако я использую асинхронные библиотеки и работаю с Future[List] общи…
13 июн '16 в 07:27
1
ответ
Молния монадой трансформаторов
streaming пакет предлагает zipsWith функция zipsWith :: (Monad m, Functor h) => (forall x y. f x -> g y -> h (x, y)) -> Stream f m r -> Stream g m r -> Stream h m r и немного более обтекаемая версия, zipsWith' :: Monad m => (for…
24 ноя '18 в 20:19
1
ответ
Free ~> Trampoline: рекурсивные сбои программы с OutOfMemoryError
Предположим, что я пытаюсь реализовать очень простой предметно-ориентированный язык только с одной операцией: printLine(line) Затем я хочу написать программу, которая принимает целое число n в качестве ввода печатает что-то, если n делится на 10k, а…
13 дек '16 в 14:01
1
ответ
Как сравнить программу, указанную в качестве свободной монады, с описанием ожидаемых инструкций?
Так что я пытаюсь сделать что-то вроде романа (я думаю), но я не достаточно опытен в программировании на уровне типов на Хаскелле, чтобы решить это сам. У меня есть бесплатная монада, описывающая некоторые эффекты, которые нужно выполнить (AST, если…
19 сен '15 в 20:55
1
ответ
Использование бесплатной монады с любым
У меня есть два DSL - EmployeeAction а также ContactAction, Вот мои черты (Действия) Complete Gist: ссылка sealed trait EmployeeAction[R] case class GetEmployee(id: Long) extends EmployeeAction[Either[Error, Employee]] sealed trait ContactAction[R] …
31 авг '17 в 11:08
2
ответа
Используйте нотацию "do" монады Haskell для определения синтаксического дерева
Я пытаюсь построить абстрактное синтаксическое дерево, которое позволяет определение с использованием монады do обозначение, как так: ast = do Variable uint8 "i" Function Void "f" $ do Variable uint8 "local_y" Comment "etc. etc." Конструкция, котору…
07 янв '18 в 09:58
2
ответа
Применение семантики к свободным монадам
Я пытаюсь абстрагировать шаблон применения определенной семантики к свободной монаде над некоторым функтором. Пример, который я использую, чтобы мотивировать это, - применение обновлений к сущности в игре. Поэтому я импортирую несколько библиотек и …
10 апр '13 в 15:34
1
ответ
Стрелка из Free и MonadFree
Как создать Arrow от Free а также MonadFree? class (Functor f, Monad m) => MonadFree f m where ... data Free f a = Impure (f (Free f a)) | Pure a MonadFree содержит 2 параметра m а также f, но Kleisli нет места для вставки fпоэтому мы не можем ис…
21 сен '13 в 11:39
1
ответ
Сложность с зумом и свободными монадами
Я возлюсь со свободными монадами и линзами, используя свободную монаду, чтобы создать свою собственную версию монады ввода / вывода: data MyIO next = LogMsg String next | GetInput (String -> next) deriving (Functor) Я укладываю это поверх государ…
06 апр '15 в 19:41
1
ответ
Попытка получить привязку, работающую для комбинации State и Delayed monad
Если ответ на этот вопрос "ты все делаешь неправильно", непременно дай мне знать более правильный путь. У меня был код, который был структурирован так: type Res<'T> = | E of (DC -> 'T) | V of 'T Теперь этот тип в основном использовался напр…
02 ноя '15 в 18:49
6
ответов
Монада Пауза
Монады могут делать много удивительных, безумных вещей. Они могут создавать переменные, которые содержат суперпозицию значений. Они могут позволить вам получить доступ к данным из будущего, прежде чем вы их вычислите. Они могут позволить вам писать …
19 апр '12 в 21:20
2
ответа
Как реализовать Reader с помощью бесплатных монад?
Итак, я понял, как реализовать Reader (а также ReaderT (не показано) с помощью operational пакет: {-# LANGUAGE GADTs, ScopedTypeVariables #-} import Control.Monad.Operational data ReaderI r a where Ask :: ReaderI r r type Reader r a = Program (Reade…
15 мар '13 в 06:42
3
ответа
Возможно ли реализовать MonadFix для `Free`?
http://hackage.haskell.org/package/free in Control.Monad.Free.Free позволяет получить доступ к "свободной монаде" для любого данного Functor, Это, однако, не имеет MonadFix пример. Это потому, что такой экземпляр не может быть записан, или он был п…
31 янв '13 в 22:07
2
ответа
Бесплатная Monad для создания блога в Scala
Предположим, мне нужно добавить сгенерированный канал RSS/Atom для сайта блога. Я думаю о паттерне"Feed Monad Interpreter". То есть я бы определил DSL с примитивами Blog а также BlogPost, Free monad, которое является просто деревом этих примитивов, …
12 янв '15 в 15:07
1
ответ
Аппликативный экземпляр для бесплатной монады
Пытаясь найти монаду haskell, которая может быть выполнена пошагово / допускает многопоточность, я обнаружил свободную монаду data Free f a = Return a | Roll (f (Free f a)) с его монадой instance (Functor f) => Monad (Free f) where return = Retur…
01 мар '14 в 23:44