Описание тега monad-transformers

Преобразователи монад - это абстракция для объединения монад. Это позволяет вам создавать различные вычислительные эффекты, создавая точно контролируемые вычислительные среды.
1 ответ

Реализация PrimMonad для стека CatchT (ST) нового типа-d

Я пытаюсь получить renderText от xml-conduit работать с ST монада. К сожалению, в отличие от renderBytesМонада должна быть PrimMonad а также MonadThrow, IO удовлетворяет это, но ST не делает. renderText :: (PrimMonad m, MonadThrow m) => RenderSet…
30 ноя '18 в 22:47
2 ответа

Есть ли лучший способ реализовать многоканальную монаду Writer в Haskell?

Проблема: Мне нужно собрать монады писателя разных типов в одном стеке монад Хаскелла. Помимо использования tell для написания отладочных сообщений я также хотел бы использовать его для записи какого-либо другого типа данных, например, пакетов данны…
20 сен '11 в 18:29
1 ответ

Монадный трансформатор стекается с MaybeT и RandT

Я пытаюсь узнать, как работают Monad Transformers, переформулировав то, что я написал, когда впервые изучил Haskell. В нем довольно много компонентов, которые могут быть заменены (довольно большим) стеком монадных трансформаторов. Я начал с написани…
06 янв '15 в 00:35
2 ответа

Какой монадный трансформатор использовать?

Я пытаюсь написать функцию проверки ниже, чтобы проверка прекратилась после первой обнаруженной ошибки. Тип возврата three отличается от других функций. Какой монадный преобразователь я использую для компиляции этого кода? import scalaz._ import Sca…
17 фев '17 в 05:41
1 ответ

Каков тип очень простой функции развертки для преобразованной монады?

Я тренируюсь с монадными трансформаторами, как представлено в http://www.cs.nott.ac.uk/~nhn/MGS2006/LectureNotes/lecture03-9up.pdf У меня есть реализация для преобразователя ошибок, который читает как: newtype ET m a = ET (m (Maybe a)) deriving inst…
25 июн '15 в 06:55
1 ответ

Может ли кто-нибудь удалить сахар из этой монады?

Написано в этой удобной нотации, мне это кажется довольно понятным. Но я не могу получить версию обессахаренного с помощью >>= на работу, которая вызывает беспокойство. Может ли кто-нибудь переписать их в расширенной записи, пожалуйста? Не вло…
23 мар '13 в 14:56
3 ответа

Используйте две монады без трансформатора

Чтобы понять, как использовать монадные преобразователи, я написал следующий код без такового. Он читает стандартный ввод строка за строкой и отображает каждую строку в обратном порядке, пока не встретится пустая строка. Он также считает строки, исп…
25 июл '15 в 16:57
1 ответ

Минималистичный пример использования Undo Monad Transformer

Я искал в Интернете учебники / примеры того, как использовать Undo Monad Transformer, но не нашел ни одного. Может ли кто-нибудь привести пример минимализма, который показывает, как его использовать? Или указание на книгу, где это объясняется, также…
25 мар '14 в 17:09
0 ответов

Общий класс лифта

Я только что взломал следующий класс следующим образом: {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleInstances #-} import Control.Monad.Trans.Class (MonadTrans, lift) class GenericLift m1 m2 where generic…
15 июн '17 в 01:28
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…
1 ответ

Монады в контексте монадного трансформатора

У меня проблемы с захватом монад и трансформаторов монад. У меня есть следующий надуманный пример (не компилируется): import Control.Monad import Control.Monad.Error import Control.Monad.Reader data State = State Int Int Int type Foo = ReaderT State…
1 ответ

ghc-mod ожидает, что MonadBaseControl будет иметь связанный с StM новый тип вместо связанного с StT

Я получаю эту ошибку при установке последней версии ghc-mod (5.2.1.1) из Hackage в песочницу: [15 of 38] Compiling Language.Haskell.GhcMod.CabalConfig ( Language/Haskell/GhcMod/CabalConfig.hs, dist/dist-sandbox-94286619/build/Language/Haskell/GhcMod…
0 ответов

Отчеты об ошибках парсера для получения правильных экземпляров

Я пытаюсь построить анализатор сообщений об ошибках в haskell. В настоящее время я смотрю на учебник, и это то, что я до сих пор. type Position = (Int, Int) type Err = (String, Position) newtype Parser1 a = Parser1 {parse1 :: StateT String (StateT P…
2 ответа

Интуиция для MaybeT

Я пытаюсь понять MaybeT запустив несколько примеров в ghci: λ: import Control.Monad.Trans.Maybe λ: let x = return $ 42 :: MaybeT (Either String) Int λ: :t x x :: MaybeT (Either String) Int Затем я запустил его: λ: runMaybeT x Right (Just 42) Пожалуй…
14 май '16 в 15:33
1 ответ

ReaderT статическая среда

Декларация ReaderT преобразователь монад, который добавляет статическую среду к данной монаде. Что значит добавить статическую среду к данной монаде? Кто-то предположил, что это дубликат другого вопроса. Я считаю, что этот вопрос уникален, потому чт…
16 окт '16 в 04:42
0 ответов

ScalaZ: отсутствует базовый метод flatMap для монадных трансформаторов? (SubFlatMap)

У меня есть следующий код: def foo: OptionT[Future, String] = OptionT(Future.successful("foobar")) def f: String => Option[Int] = s => Some(s.length) Я ищу что-то в библиотеке скалаза, которая составляет f после foo, но есть только две реализа…
17 сен '18 в 18:10
6 ответов

Кто-нибудь когда-нибудь сталкивался с монадным трансформатором в дикой природе?

В моей сфере деятельности - бэк-офисе ИТ для финансового учреждения - очень часто для программного компонента характерно иметь глобальную конфигурацию, регистрировать его прогресс, иметь какое-то короткое замыкание по обработке ошибок / вычислениям.…
0 ответов

Скотти и Читатель Монада

Я пытаюсь добавить монаду Reader в свое приложение Scotty, чтобы иметь единый корневой путь для внутреннего расширения URL. Кажется, я не могу понять, как Скотти справляется с трансформацией монады - обычно я просто вижу что-то вроде runTransformerT…
3 ответа

Почему преобразователь является первым аргументом "запускаемых" функций?

Я имею в виду, почему это не приходит последним? Из-за этого соглашения для оценки стека трансформаторов нужно написать такую ​​неловкую вещь: runStateT (runReaderT (runRWST stack r s) r') s' вместо: runStateT s' $ runReaderT r' $ runRWST r s $ stac…
27 мар '14 в 06:53
1 ответ

Поднимите, чтобы зафиксировать * внутреннюю часть * монадного стека трансформаторов.

Предположим, у меня есть IO Int завернутый в StateT MyStateтогда у меня есть значение State MyState Int который я хочу использовать в сложенной монаде. Как мне поднять это в этом внутреннем смысле? Я уже знаю использовать lift или же liftIO если я п…
29 ноя '14 в 07:51