Вопросы по теме 'io-monad'
Получайте ценность от ввода-вывода, а не от самих вычислений
Поскольку я новичок в Haskell, в настоящее время я пытаюсь улучшить свои навыки, написав интерпретатор для простого императивного игрушечного языка.
Одно из выражений на этом языке - input , которое считывает одно целое число из стандартного...
570 просмотров
schedule
22.10.2021
Что происходит в подписи этого типа? (Модификаторы 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 просмотров
schedule
14.05.2022
Можно ли эмулировать поведение StateT без использования пользовательских типов?
Если у нас есть следующие две функции, сложение и вычитание, их просто связать в цепочку, чтобы выполнить серию вычислений на входе:
add :: Int -> State Int ()
add n = state $ \x -> ((),x+n)
subtract :: Int -> State Int ()
subtract n =...
80 просмотров
schedule
17.05.2022
Можно ли сделать монаду 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 просмотров
schedule
13.05.2023
Как восстановить ленивую оценку монадически построенного списка после переключения с 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 просмотров
schedule
10.04.2023
Почему `filterM + mapM_` намного медленнее, чем `mapM_ + when`, с большими списками?
Я не очень хорошо разбираюсь в том, как оптимизация Haskell работает внутри, но я использовал фильтры, очень надеясь, что они оптимизированы в нечто эквивалентное простому if в C++. Например
mapM_ print $ filter (\n -> n `mod` 2 == 0) [0..10]...
127 просмотров
schedule
25.02.2023
откат действия ввода-вывода
У меня есть очень простая абстракция для работы с последовательностью действий ввода-вывода, которые можно откатить (в некоторой степени), т. е. если действие записывает файл, то откатом будет удаление этого файла или если действие создает дерево...
179 просмотров
schedule
01.11.2023
Как мне использовать карту над списком с нотацией do, т.е. избегать типа `IO()' с типом `[IO()]'?
Итак, этот вопрос касается монад в более общем плане (в частности, для Fay), но в моем примере используется монада IO.
У меня есть функция, в которой ввод представляет собой список строк, и я хотел бы напечатать каждую строку одну за другой. Итак,...
1421 просмотров
schedule
19.03.2024