Вопросы по теме 'io-monad'

Получайте ценность от ввода-вывода, а не от самих вычислений
Поскольку я новичок в Haskell, в настоящее время я пытаюсь улучшить свои навыки, написав интерпретатор для простого императивного игрушечного языка. Одно из выражений на этом языке - input , которое считывает одно целое число из стандартного...
570 просмотров

Что происходит в подписи этого типа? (Модификаторы Vector.Mutable в Haskell)
Изменяемые векторы в Haskell имеют три мутатора на уровне элемента: read :: PrimMonad m => MVector (PrimState m) a -> Int -> m a write :: PrimMonad m => MVector (PrimState m) a -> Int -> a -> m () swap :: PrimMonad m =>...
900 просмотров

Можно ли эмулировать поведение StateT без использования пользовательских типов?
Если у нас есть следующие две функции, сложение и вычитание, их просто связать в цепочку, чтобы выполнить серию вычислений на входе: add :: Int -> State Int () add n = state $ \x -> ((),x+n) subtract :: Int -> State Int () subtract n =...
80 просмотров

Можно ли сделать монаду IO из Haskell в Clojure?
Я просмотрел algo.monads и fluokitten документация. Я также прочитал записи в блоге монад Джима Дьюи , Конрад Хинсен и Леонардо Борхес . Самое близкое, что я могу найти, это библиотека Монадических потоков ввода-вывода Конрада Хинсена -...
1042 просмотров
schedule 22.05.2022

Не удалось сопоставить ожидаемый тип «IO [String]» с фактическим типом «[String]».
У меня есть эти два фрагмента кода, которые, я думаю, делают одно и то же, но это не так. Почему это? Этот работает нормально: fdup :: String -> IO () fdup filename = do h <- openFile filename ReadMode c <-...
291 просмотров
schedule 12.07.2022

Монада IO и порядок
Я играю с монадой IO и учусь использовать побочные эффекты в Haskell, и кажется, что я ошибся. Рассмотрим следующий код: main = do putStr "test" getLine return () Насколько я понимаю, do "склеивает" три монады ввода-вывода в...
62 просмотров
schedule 30.07.2022

Порядок выполнения с помощью `mapM` в Haskell
Рассмотрим следующий оператор Haskell: mapM print ["1", "2", "3"] Действительно, это печатает «1», «2» и «3» по порядку. Вопрос: Откуда вы знаете, что mapM сначала напечатает "1", затем напечатает "2" и наконец напечатать "3"....
345 просмотров
schedule 04.08.2022

Шекспировские шаблоны Йесода (гамлет) и IO
Как в «Гамлете» можно использовать результат операции ввода-вывода внутри #{...} ? Например : someIO :: IO String ----------------- $with stuff <- someIO <p>#{stuff} Сбой с No instance for...
344 просмотров
schedule 07.03.2023

Как работать с изменяемыми структурами в монаде IO
TL;DR: Как обеспечить постоянство значений, сгенерированных randomRIO (из System.Random ) в данном операторе do ? Как мне работать с изменяемыми структурами в IO Monad? Мой первоначальный вопрос был (очень) неправильным - я обновляю...
282 просмотров
schedule 23.03.2023

Объединение монады Scalaz IO с Stream для простой эхо-программы с использованием метода takeWhile
Я ищу решение проблемы «Жизнь, Вселенная и все остальное» на spoj.com с использованием Scalaz IO Monad и Stream. Проблема состоит в том, чтобы переписать небольшие числа из ввода в вывод и остановить обработку ввода после чтения числа 42. Я создал...
84 просмотров
schedule 13.03.2023

Как я могу использовать MVars для перемещения лопастей в моей игре в пинг-понг?
У меня уже есть функция, которая перемещает 2 ракетки в игре в пинг-понг в Haskell. Я хочу измениться, чтобы теперь он использовал MVars. Я знаю, что мне нужно изменить wHeld, sHeld, downHeld и upHeld на MVars, но есть идеи о том, как изменить...
96 просмотров

Как восстановить ленивую оценку монадически построенного списка после переключения с State на StateT?
Со следующим кодом: ( lazy_test.hs ) -- Testing lazy evaluation of monadically constructed lists, using State. import Control.Monad.State nMax = 5 foo :: Int -> State [Int] Bool foo n = do modify $ \st -> n : st return (n `mod` 2 ==...
99 просмотров

Почему `filterM + mapM_` намного медленнее, чем `mapM_ + when`, с большими списками?
Я не очень хорошо разбираюсь в том, как оптимизация Haskell работает внутри, но я использовал фильтры, очень надеясь, что они оптимизированы в нечто эквивалентное простому if в C++. Например mapM_ print $ filter (\n -> n `mod` 2 == 0) [0..10]...
127 просмотров

откат действия ввода-вывода
У меня есть очень простая абстракция для работы с последовательностью действий ввода-вывода, которые можно откатить (в некоторой степени), т. е. если действие записывает файл, то откатом будет удаление этого файла или если действие создает дерево...
179 просмотров
schedule 01.11.2023

Как мне использовать карту над списком с нотацией do, т.е. избегать типа `IO()' с типом `[IO()]'?
Итак, этот вопрос касается монад в более общем плане (в частности, для Fay), но в моем примере используется монада IO. У меня есть функция, в которой ввод представляет собой список строк, и я хотел бы напечатать каждую строку одну за другой. Итак,...
1421 просмотров
schedule 19.03.2024