0
ответов

Такая функция уже существует? (Или, как лучше назвать эту функцию?)

Недавно я несколько раз писал код со следующим шаблоном, и мне было интересно, есть ли более короткий способ его написания. foo :: IO String foo = do x <- getLine putStrLn x >> ...
вопрос задан: 22 September 2011 16:58
0
ответов

избегайте явной передачи таблицы поиска

В моей очень простой игрушечной программе с логическими выражениями у меня есть следующая оценочная функция: eval ':: Expr -> M.Map Char Bool -> Bool eval' (Const c) values = c eval '(Var v) values ​​= M ....
вопрос задан: 21 September 2011 17:28
0
ответов

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

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

Почему мы имеем карту, fmap и liftM?

карта:: (a - > b) - > [a] - > [b] fmap:: Functor f = > (a - > b) - > f a - > f b liftM:: Monad m = > (a - > b) - > m a - > m b Почему у нас есть три различные функции
вопрос задан: 18 September 2011 18:32
0
ответов

Складывая Maybes в Haskell

В попытке узнать Хаскелл, я наткнулся на ситуацию, в которой я хотел бы сделать складывание по списку, но мой аккумулятор - это "Может быть". Функция, с помощью которой я складываю, принимает "извлеченный" ...
вопрос задан: 18 September 2011 09:22
0
ответов

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

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

] Вызов монады ввода-вывода внутри стрелки [

] Возможно Я ошибаюсь, но я использую HXT для чтения некоторых данных вершин, которые я хотел бы использовать в массиве в HOpenGL. Массивы вершин должны быть Ptr, которые создаются путем вызова ... [
вопрос задан: 30 August 2011 21:49
0
ответов

Как писать без нотации Do

Я играл с компонуемыми ошибками и сумел написать функцию с подписью getPerson :: IO (Maybe Person), где Person - это: data Person = Person String Int, вывод Show It ...
вопрос задан: 29 August 2011 12:03
0
ответов

HASKELL: Какой монад я просто изобрел?

Я просто изобрел немного монады, но я не уверен, что. Это позволяет вам моделировать шаги вычисления, поэтому вы можете перекрестите шаги многочисленных вычислений, чтобы найти, какой из них заканчивается первым. {- # ...
вопрос задан: 28 August 2011 20:57
0
ответов

Хорошие примеры не Функтора/Функтора/Аппликативного/Монада?

Объясняя кому-то, что такое класс типа X, я с трудом нахожу хорошие примеры структур данных, которые в точности являются X. Поэтому я прошу привести примеры: Конструктор типа, который не является Functor. A ...
вопрос задан: 27 August 2011 23:42
0
ответов

«Настоящий» ленивый ввод-вывод в Haskell

Рассмотрим фрагмент - getLine >> = \ _ -> getLine >> = putStr Он делает разумную вещь, дважды запрашивая строку, а затем распечатывая последний ввод. Потому что у компилятора нет способа ...
вопрос задан: 25 August 2011 13:36
0
ответов

Как я могу объединить CheckingFuelMonad с монадой State в Hoopl?

Я использую библиотеку Hoopl и хотел бы сохранить какое-то состояние при перезаписи. Функции перезаписи полиморфны относительно используемой монады, но я не могу понять, как скомбинировать состояние ...
вопрос задан: 20 August 2011 19:04
0
ответов

Генерация случайных чисел Haskell

Как лучше всего обрабатывать генерацию случайных чисел в Haskell (или какие компромиссы)? Я действительно не видел авторитетного ответа. Подумайте: минимизация воздействия на чистые в остальном ...
вопрос задан: 19 August 2011 05:16
0
ответов

Когда использовать монады Haskell

Я реализую комбинаторный алгоритм оптимизации в Haskell: учитывая начальное возможное решение, повторяйте, пока не будут выполнены критерии остановки: 1. Определите возможные ходы 2. Оцените возможные ...
вопрос задан: 18 August 2011 17:24
0
ответов

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

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

определением правильного типа исключений

(вопрос для новичков. :-)) Предположим, у вас есть последовательность операций (проверка работоспособности во внешнем мире) . Если здравомыслие не удается, приходится кричать. Однако если Haskell требует определения обеих ветвей. ...
вопрос задан: 2 August 2011 21:50
0
ответов

for..else для типов Option в Scala?

Предположим, у меня есть два параметра и, если оба являются Некоторыми, выполнить один путь кода, а если обратите внимание, выполнить другой. Я бы хотел сделать что-то вроде for (x <- xMaybe; y <- yMaybe) {// сделать что-нибудь } else { ...
вопрос задан: 1 August 2011 04:24
0
ответов

Управление системой вычислений с отслеживанием состояния в Haskell

Итак, у меня есть система процессоров с отслеживанием состояния, которые связаны друг с другом. Например, процессор может выводить среднее значение из последних 10 входов. Для расчета этого среднего требуется штат. Я бы ...
вопрос задан: 26 July 2011 20:23
0
ответов

Экземпляр монады для двоичного дерева

Я построил двоичное дерево с помощью: Data Tree a = Empty | Узел a (Дерево a) (Дерево a), производное (Eq, Ord, Read, Show) Как я могу создать экземпляр класса типа Monad для этого дерева? И могу ли я ...
вопрос задан: 23 July 2011 06:26
0
ответов

Как определить экземпляр монады «ma» с «a» в Typeclass Show?

Я хотел бы определить экземпляр монады с контейнером M как монада и содержащийся в нем тип a, который должен быть членом класса Show. Это ограничение (что a является членом Show) должно быть гарантировано ...
вопрос задан: 20 July 2011 15:00
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
ответов

Выход из монады ввода-вывода внутри монады продолжения

Непонятный заголовок за непонятный вопрос! Я понимаю: а) монады, б) монаду ввода-вывода, в) монаду Cont (Control.Monad.Cont) и г) монаду преобразователя продолжения ContT. (И я смутно понимаю ...
вопрос задан: 6 July 2011 13:23
0
ответов

Реализован ли аппликативный ввод-вывод на основе функций из Monad IO?

В статье «Изучите Haskell во благо!» Автор утверждает, что экземпляр Applicative IO реализован следующим образом: instance Applicative IO where pure = return a <*> b = do f <- a ...
вопрос задан: 3 July 2011 19:09
0
ответов

Что произойдет с вами, если вы нарушите законы монад?

Компилятор или более «родные» части библиотек (ввод-вывод или функции, имеющие доступ к черной магии) а реализация) делать предположения об этих законах? Приведет ли их нарушение к ...
вопрос задан: 19 June 2011 00:33
0
ответов

Как реализовать глобальный счетчик с помощью Monad?

Мне нужен глобальный счетчик , начиная с 0, 1, 2, 3, ..... Я как бы понимаю, что этот "нечистый" код должен быть реализован отдельно ... Я только начинаю понимать Монаду, но понятия не имею, как ...
вопрос задан: 10 June 2011 05:15
0
ответов

Использование 'Either' в Haskell

I имеют два значения, t1 и t2, типа Either String Type. Левое значение используется для обработки ошибок. Эти значения используются в функции, которая возвращает любой строковый тип. Я хочу проверить ...
вопрос задан: 9 June 2011 09:27
0
ответов

Вызов JQuery Deferred с помощью монадических заклинаний

Вдохновленный этим (превосходным) обсуждением использования Promises в javascript, я пытаюсь понять, как я могу использовать Deferred для объединения асинхронных и нестандартных кодов. -async, чтобы избежать обратного вызова ...
вопрос задан: 4 June 2011 14:29
0
ответов

Как преобразовать свободную монаду в функтор?

На странице свободной структуры вики Haskell определяется функция для преобразования экземпляра функтора в свободную монаду: inj :: Functor f => fa -> Free fa inj fa = Roll $ fmap Return fa Затем, скажем, inj ...
вопрос задан: 3 June 2011 00:01
0
ответов

Ограничение отдела в отношении unsafePerformIO

В настоящее время ведутся разговоры о том, чтобы сделать это политикой всего отдела, запрещающей использование unsafePerformIO и ему подобных. Лично я не возражаю, так как я Я всегда утверждал, что если я ...
вопрос задан: 25 May 2011 16:35
0
ответов

Рекурсивный ввод-вывод в Haskell

В Haskell я могу легко определить рекурсивную функцию, которая принимает значение и возвращает строку: Prelude> let countdown i = if (i> 0) затем (показать i) ++ обратный отсчет (i-1) еще "" Prelude> ...
вопрос задан: 24 May 2011 17:34