У меня есть монада для вычислений, которые могут дать сбой, и она ведет журнал: f1 :: WriterT [String] (Either String) a У меня есть функция, которая не даст сбой, но некоторое ведение журнала: f2 :: Writer [String] b ...
Если у меня есть стек монад, скажем, IO, State и Error, и функция, которая использует только IO и Error. Как можно «удалить» монаду среднего состояния из стека, чтобы я мог использовать свою функцию? Если...
В настоящее время я пишу проект, в котором я интенсивно использую преобразователь монад ListT. При использовании простых списков реализовать недетерминизм очень просто. Однако, как только мне пришлось преобразовать свой код в ListT, ...
Я пытаюсь решить проблему сбалансированных скобок. Я не хочу выполнять непрерывный ввод-вывод, а предпочел бы сделать один вызов getLine и проанализировать полученную строку. Поэтому функция, которая решает ...
Просматривая пакет преобразователей, я обнаружил преобразователь монад под названием IdentityT. Хотя я понимаю, как используется монада Identity (например, State - это просто псевдоним для StateT Identity) ...
Я эмулирую 4-битный микропроцессор. Мне нужно отслеживать регистры, память и текущий вывод (бонусные баллы за наличие счетчика циклов выборки-выполнения). Мне это удалось ...
Я играю с написанием веб-приложения. В данном случае я использую scotty и redis, но эта проблема возникает при любом сочетании web/db. До этого я использовал happstack, так что я бы хотел получить пример и там. ...
Это мое первое знакомство с преобразователями монад, поэтому ответ может быть очевиден. Допустим, я нахожусь внутри блока do типа StateT MyMonad MyType, я хочу создать другую функцию того же типа ...
Скажем, у меня есть некоторый foo :: Maybe Int, и я хочу связать его, например, с bar :: Int -> MaybeT ( Writer String) Int, какой идиоматический способ сделать это? Я мог бы определить свой собственный лифт. Может быть ...
Я написал монаду с функциональностью Writer, используя подход Operational Monad. Затем я заметил, что она не работает лениво. В приведенном ниже коде есть rogueWriter, который выполняет бесконечно много ...
Контекст: я пытаюсь создать монаду ошибок, которая также отслеживает список предупреждений , примерно так: data Dangerous a = forall e w. (Error e, Show e, Show w) => Dangerous (ErrorT e (...
У меня есть следующая монада-трансформер для работы с ошибками в Хаскеле. instance (Monad m, Error e) => Monad (EitherT e m) where return = EitherT . return . return m >>= k = ...
мотивация. Я пытаюсь создать преобразователь монад со специальной инструкцией f <||> g, которая означает «повторить весь этот блок, содержащий f <||> g, один раз с f, в следующий раз с g». Это ...
У меня есть следующий шаблон, который я делаю довольно часто и хотел бы исключить. Выглядит это примерно так: type Configured = ReaderT Config doSomething :: Configured IO Data
doSomething = do
...
Я провел несколько тестов Criterion, чтобы оценить, сколько производительности я потеряю, запустив свой код поверх стека монад. Результаты были довольно любопытными, и я, вероятно, наткнулся на некоторую ловушку лени ...
Многие из комбинаторов Parsec, которые я использую, имеют такой тип, как: foo :: CharParser st Foo CharParser определяется здесь как: type CharParser st = GenParser Char st CharParser, таким образом, является синонимом типа .. .
Я хочу создать приложение Happstack с большим доступом к базе данных. Я думаю, что стек монад с вводом-выводом внизу и монадой типа записи базы данных наверху (с записью журнала в середине) будет ...
Проблема: мне нужно скомпоновать монады записи разных типов в одном стеке преобразователя монад Haskell. Помимо использования tell для записи отладочных сообщений, я также хотел бы использовать его для записи некоторых других данных ...
Извините, если вопрос кажется немного тривиальным ... это не для меня. Я радостно сописал следующий монад: Type SB IA = Readert (Algro I) (штат (ALGSTATE I)) А что такое, ну, хорошо ...
В документации для Control.Monad.Trans.Error приводится этот пример объединения двух монад: type ErrorWithIO ea = ErrorT e IO a
==> ErrorT (IO (Either ea)) Я считаю это нелогичным: хотя ...
Проблема вот в чем. У меня есть: f :: MonadIO m => ReaderT FooBar m Ответ;
f = (liftIO getArgs) >> = ... Мне нужно запустить это с измененными аргументами. Однако, поскольку m неизвестно, я не могу просто ...
У меня есть набор функций с отслеживанием состояния внутри монады состояния. В какой-то момент программы должны быть какие-то действия ввода-вывода, поэтому я обернул ввод-вывод внутри StateT, получив пару таких типов: ...
Допустим, у меня есть функция f :: State [Int] Int и функция: g :: StateT [Int] IO Int Я хочу использовать f в g и передавать состояние между ними. Есть ли библиотечная функция для
StateT (return. ...
I need to write a state monad that can also support error handling. I was thinking of using the Either monad for this purpose because it can also provide details about what caused the error. I found a ...
Я пытаюсь работать с Ubigraph в haskell, но я считаю, что моя проблема более общая. Я пытаюсь скомпилировать: import Graphics.Ubigraph
импорт Control.Monad
import System.Posix.Unistd main = do h ...
На Hackage есть много различных библиотек преобразователей монад. Некоторым кажется больше внимания, чем другим. Назовем несколько: mtl (текущая версия по какой-то причине зависит от преобразователей), ...
В настоящее время я пытаюсь написать небольшую игровую программу (Skat) в качестве хобби-проекта. Скат - это игра, в которой два игрока играют против одного. Поскольку есть разные типы игроков (lokal ...
В каких ситуациях следует использовать liftIO? Когда я использую ErrorT String IO, функция лифта переводит действия ввода-вывода в ErrorT, поэтому liftIO кажется излишним.