0
ответов

Создание пользовательского преобразователя монад экземпляром MonadError

монада является экземпляром. По сути, я хочу, чтобы мой преобразователь вел себя, например, как встроенные преобразователи...
вопрос задан: 30 March 2012 22:58
0
ответов

Обновление внешней монады только в преобразователе монады

У меня есть монада для вычислений, которые могут дать сбой, и она ведет журнал: f1 :: WriterT [String] (Either String) a У меня есть функция, которая не даст сбой, но некоторое ведение журнала: f2 :: Writer [String] b ...
вопрос задан: 14 March 2012 13:48
0
ответов

Управление стеком монад

Если у меня есть стек монад, скажем, IO, State и Error, и функция, которая использует только IO и Error. Как можно «удалить» монаду среднего состояния из стека, чтобы я мог использовать свою функцию? Если...
вопрос задан: 8 March 2012 00:49
0
ответов

Как разветвить внутри монадного преобразователя

Рассмотрите некоторый стек монадных преобразователей, скажем, {-# LANGUAGE GeneralizedNewtypeDeriving #-} ... newtype J = J { runJ :: ErrorT Foo (StateT Bar IO) a } производные (Applicative, Functor и т.д.) И некоторые...
вопрос задан: 6 March 2012 13:23
0
ответов

Как чисто преобразовать между списками и преобразователями монад ListT?

В настоящее время я пишу проект, в котором я интенсивно использую преобразователь монад ListT. При использовании простых списков реализовать недетерминизм очень просто. Однако, как только мне пришлось преобразовать свой код в ListT, ...
вопрос задан: 9 February 2012 16:49
0
ответов

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

Я пытаюсь решить проблему сбалансированных скобок. Я не хочу выполнять непрерывный ввод-вывод, а предпочел бы сделать один вызов getLine и проанализировать полученную строку. Поэтому функция, которая решает ...
вопрос задан: 8 February 2012 09:47
0
ответов

Для чего нужен преобразователь IdentityT?

Просматривая пакет преобразователей, я обнаружил преобразователь монад под названием IdentityT. Хотя я понимаю, как используется монада Identity (например, State - это просто псевдоним для StateT Identity) ...
вопрос задан: 3 February 2012 02:09
0
ответов

Различные взаимодействующие уровни состояния в haskell

Я эмулирую 4-битный микропроцессор. Мне нужно отслеживать регистры, память и текущий вывод (бонусные баллы за наличие счетчика циклов выборки-выполнения). Мне это удалось ...
вопрос задан: 1 February 2012 09:19
0
ответов

Объединить две монады, когда ни у одной из них нет трансформатора?

Я играю с написанием веб-приложения. В данном случае я использую scotty и redis, но эта проблема возникает при любом сочетании web/db. До этого я использовал happstack, так что я бы хотел получить пример и там. ...
вопрос задан: 27 January 2012 22:19
0
ответов

Результат монады внутри преобразователя монад

Это мое первое знакомство с преобразователями монад, поэтому ответ может быть очевиден. Допустим, я нахожусь внутри блока do типа StateT MyMonad MyType, я хочу создать другую функцию того же типа ...
вопрос задан: 20 January 2012 15:27
0
ответов

Как вставить значение Maybe в MaybeT

Скажем, у меня есть некоторый foo :: Maybe Int, и я хочу связать его, например, с bar :: Int -> MaybeT ( Writer String) Int, какой идиоматический способ сделать это? Я мог бы определить свой собственный лифт. Может быть ...
вопрос задан: 30 December 2011 21:25
0
ответов

Writer, реализованный с помощью Operational Monad, не работает лениво

Я написал монаду с функциональностью Writer, используя подход Operational Monad. Затем я заметил, что она не работает лениво. В приведенном ниже коде есть rogueWriter, который выполняет бесконечно много ...
вопрос задан: 26 December 2011 13:47
0
ответов

Экзистенциальные типы и преобразователи монад

Контекст: я пытаюсь создать монаду ошибок, которая также отслеживает список предупреждений , примерно так: data Dangerous a = forall e w. (Error e, Show e, Show w) => Dangerous (ErrorT e (...
вопрос задан: 22 December 2011 18:49
0
ответов

Монады Хаскеля и fail, который не требует строки

У меня есть следующая монада-трансформер для работы с ошибками в Хаскеле. instance (Monad m, Error e) => Monad (EitherT e m) where return = EitherT . return . return m >>= k = ...
вопрос задан: 22 December 2011 09:51
0
ответов

как я могу реализовать этот преобразователь монад с продолжением?

мотивация. Я пытаюсь создать преобразователь монад со специальной инструкцией f <||> g, которая означает «повторить весь этот блок, содержащий f <||> g, один раз с f, в следующий раз с g». Это ...
вопрос задан: 4 December 2011 22:16
0
ответов

Шаблон Haskell ReaderT Env IO

У меня есть следующий шаблон, который я делаю довольно часто и хотел бы исключить. Выглядит это примерно так: type Configured = ReaderT Config doSomething :: Configured IO Data doSomething = do ...
вопрос задан: 16 November 2011 21:58
0
ответов

Нечетные результаты теста монадного преобразователя. Ошибка?

Я провел несколько тестов Criterion, чтобы оценить, сколько производительности я потеряю, запустив свой код поверх стека монад. Результаты были довольно любопытными, и я, вероятно, наткнулся на некоторую ловушку лени ...
вопрос задан: 11 November 2011 10:41
0
ответов

Базовая монада Parsec

Многие из комбинаторов Parsec, которые я использую, имеют такой тип, как: foo :: CharParser st Foo CharParser определяется здесь как: type CharParser st = GenParser Char st CharParser, таким образом, является синонимом типа .. .
вопрос задан: 8 November 2011 17:22
0
ответов

Как создать стек монад базы данных в Happstack ?

Я хочу создать приложение Happstack с большим доступом к базе данных. Я думаю, что стек монад с вводом-выводом внизу и монадой типа записи базы данных наверху (с записью журнала в середине) будет ...
вопрос задан: 18 October 2011 11:33
0
ответов

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

Проблема: мне нужно скомпоновать монады записи разных типов в одном стеке преобразователя монад Haskell. Помимо использования tell для записи отладочных сообщений, я также хотел бы использовать его для записи некоторых других данных ...
вопрос задан: 20 September 2011 18:29
0
ответов

Абстрация монадской композиции в качестве трансформатора

Извините, если вопрос кажется немного тривиальным ... это не для меня. Я радостно сописал следующий монад: Type SB IA = Readert (Algro I) (штат (ALGSTATE I)) А что такое, ну, хорошо ...
вопрос задан: 14 September 2011 08:42
0
ответов

Попытка понять типы, производимые преобразователями монад

В документации для Control.Monad.Trans.Error приводится этот пример объединения двух монад: type ErrorWithIO ea = ErrorT e IO a ==> ErrorT (IO (Either ea)) Я считаю это нелогичным: хотя ...
вопрос задан: 17 August 2011 04:47
0
ответов

mapMonadTrans :: MonadTrans xT => (ma -> nb) -> xT ma -> xT nb

Проблема вот в чем. У меня есть: f :: MonadIO m => ReaderT FooBar m Ответ; f = (liftIO getArgs) >> = ... Мне нужно запустить это с измененными аргументами. Однако, поскольку m неизвестно, я не могу просто ...
вопрос задан: 6 July 2011 20:12
0
ответов

Как называется эта функция стека монад?

У меня есть набор функций с отслеживанием состояния внутри монады состояния. В какой-то момент программы должны быть какие-то действия ввода-вывода, поэтому я обернул ввод-вывод внутри StateT, получив пару таких типов: ...
вопрос задан: 11 May 2011 17:10
0
ответов

Объединение монад StateT и State

Допустим, у меня есть функция f :: State [Int] Int и функция: g :: StateT [Int] IO Int Я хочу использовать f в g и передавать состояние между ними. Есть ли библиотечная функция для StateT (return. ...
вопрос задан: 2 May 2011 21:29
0
ответов

How can I write a state monad that does error handling as well?

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 ...
вопрос задан: 2 May 2011 20:51
0
ответов

Смешивание монад в Haskell

Я пытаюсь работать с Ubigraph в haskell, но я считаю, что моя проблема более общая. Я пытаюсь скомпилировать: import Graphics.Ubigraph импорт Control.Monad import System.Posix.Unistd main = do h ...
вопрос задан: 27 April 2011 15:43
0
ответов

Библиотеки преобразователей монад - какую из них использовать? [закрыто]

На Hackage есть много различных библиотек преобразователей монад. Некоторым кажется больше внимания, чем другим. Назовем несколько: mtl (текущая версия по какой-то причине зависит от преобразователей), ...
вопрос задан: 26 April 2011 22:39
0
ответов

Дизайн абстракции интерфейса

В настоящее время я пытаюсь написать небольшую игровую программу (Skat) в качестве хобби-проекта. Скат - это игра, в которой два игрока играют против одного. Поскольку есть разные типы игроков (lokal ...
вопрос задан: 24 April 2011 15:32
0
ответов

Haskell: lift vs liftIO

В каких ситуациях следует использовать liftIO? Когда я использую ErrorT String IO, функция лифта переводит действия ввода-вывода в ErrorT, поэтому liftIO кажется излишним.
вопрос задан: 13 October 2010 06:21