Недавно я несколько раз писал код со следующим шаблоном, и мне было интересно, есть ли более короткий способ его написания. foo :: IO String
foo = do x <- getLine putStrLn x >> ...
В моей очень простой игрушечной программе с логическими выражениями у меня есть следующая оценочная функция: eval ':: Expr -> M.Map Char Bool -> Bool eval' (Const c) values = c eval '(Var v) values = M ....
Проблема: мне нужно скомпоновать монады записи разных типов в одном стеке преобразователя монад Haskell. Помимо использования tell для записи отладочных сообщений, я также хотел бы использовать его для записи некоторых других данных ...
карта:: (a - > b) - > [a] - > [b] fmap:: Functor f = > (a - > b) - > f a - > f b liftM:: Monad m = > (a - > b) - > m a - > m b Почему у нас есть три различные функции
В попытке узнать Хаскелл, я наткнулся на ситуацию, в которой я хотел бы сделать складывание по списку, но мой аккумулятор - это "Может быть". Функция, с помощью которой я складываю, принимает "извлеченный" ...
Извините, если вопрос кажется немного тривиальным ... это не для меня. Я радостно сописал следующий монад: Type SB IA = Readert (Algro I) (штат (ALGSTATE I)) А что такое, ну, хорошо ...
] Возможно Я ошибаюсь, но я использую HXT для чтения некоторых данных вершин, которые я хотел бы использовать в массиве в HOpenGL. Массивы вершин должны быть Ptr, которые создаются путем вызова ... [
Я играл с компонуемыми ошибками и сумел написать функцию с подписью getPerson :: IO (Maybe Person), где Person - это: data Person = Person String Int, вывод Show It ...
Я просто изобрел немного монады, но я не уверен, что. Это позволяет вам моделировать шаги вычисления, поэтому вы можете перекрестите шаги многочисленных вычислений, чтобы найти, какой из них заканчивается первым. {- # ...
Объясняя кому-то, что такое класс типа X, я с трудом нахожу хорошие примеры структур данных, которые в точности являются X. Поэтому я прошу привести примеры: Конструктор типа, который не является Functor.
A ...
Рассмотрим фрагмент - getLine >> = \ _ -> getLine >> = putStr Он делает разумную вещь, дважды запрашивая строку, а затем распечатывая последний ввод. Потому что у компилятора нет способа ...
Я использую библиотеку Hoopl и хотел бы сохранить какое-то состояние при перезаписи. Функции перезаписи полиморфны относительно используемой монады, но я не могу понять, как скомбинировать состояние ...
Как лучше всего обрабатывать генерацию случайных чисел в Haskell (или какие компромиссы)? Я действительно не видел авторитетного ответа. Подумайте: минимизация воздействия на чистые в остальном ...
В документации для Control.Monad.Trans.Error приводится этот пример объединения двух монад: type ErrorWithIO ea = ErrorT e IO a
==> ErrorT (IO (Either ea)) Я считаю это нелогичным: хотя ...
(вопрос для новичков. :-)) Предположим, у вас есть последовательность операций (проверка работоспособности во внешнем мире) . Если здравомыслие не удается, приходится кричать. Однако если Haskell требует определения обеих ветвей. ...
Предположим, у меня есть два параметра и, если оба являются Некоторыми, выполнить один путь кода, а если обратите внимание, выполнить другой. Я бы хотел сделать что-то вроде for (x <- xMaybe; y <- yMaybe) {// сделать что-нибудь
}
else {
...
Итак, у меня есть система процессоров с отслеживанием состояния, которые связаны друг с другом. Например, процессор может выводить среднее значение из последних 10 входов. Для расчета этого среднего требуется штат. Я бы ...
Я построил двоичное дерево с помощью: Data Tree a = Empty | Узел a (Дерево a) (Дерево a), производное (Eq, Ord, Read, Show) Как я могу создать экземпляр класса типа Monad для этого дерева? И могу ли я ...
Я хотел бы определить экземпляр монады с контейнером M как монада и содержащийся в нем тип a, который должен быть членом класса Show. Это ограничение (что a является членом Show) должно быть гарантировано ...
Проблема вот в чем. У меня есть: f :: MonadIO m => ReaderT FooBar m Ответ;
f = (liftIO getArgs) >> = ... Мне нужно запустить это с измененными аргументами. Однако, поскольку m неизвестно, я не могу просто ...
В статье «Изучите Haskell во благо!» Автор утверждает, что экземпляр Applicative IO реализован следующим образом: instance Applicative IO where pure = return a <*> b = do f <- a ...
Компилятор или более «родные» части библиотек (ввод-вывод или функции, имеющие доступ к черной магии) а реализация) делать предположения об этих законах? Приведет ли их нарушение к ...
Мне нужен глобальный счетчик , начиная с 0, 1, 2, 3, .....
Я как бы понимаю, что этот "нечистый" код должен быть реализован отдельно ... Я только начинаю понимать Монаду, но понятия не имею, как ...
I имеют два значения, t1 и t2, типа Either String Type. Левое значение используется для обработки ошибок. Эти значения используются в функции, которая возвращает любой строковый тип. Я хочу проверить ...
Вдохновленный этим (превосходным) обсуждением использования Promises в javascript, я пытаюсь понять, как я могу использовать Deferred для объединения асинхронных и нестандартных кодов. -async, чтобы избежать обратного вызова ...
На странице свободной структуры вики Haskell определяется функция для преобразования экземпляра функтора в свободную монаду: inj :: Functor f => fa -> Free fa
inj fa = Roll $ fmap Return fa Затем, скажем, inj ...
В настоящее время ведутся разговоры о том, чтобы сделать это политикой всего отдела, запрещающей использование unsafePerformIO и ему подобных. Лично я не возражаю, так как я Я всегда утверждал, что если я ...
В Haskell я могу легко определить рекурсивную функцию, которая принимает значение и возвращает строку: Prelude> let countdown i = if (i> 0) затем (показать i) ++ обратный отсчет (i-1) еще ""
Prelude> ...