Вопросы по теме 'do-notation'

Государственная монада, последовательности случайных чисел и монадический код
Я пытаюсь понять Монаду Состояния, и с этой целью я хотел написать монадический код, который генерировал бы последовательность случайных чисел с помощью Линейного Конгруэнтного Генератора (вероятно, не очень хорошо, но я намерен просто изучить Монаду...
2630 просмотров
schedule 14.04.2022

конструкция «делать» в Haskell
Я пытаюсь изучить Haskell и хочу написать небольшую программу, которая выводит содержимое файла на экран. Когда я загружаю его в GHCi, я получаю следующую ошибку: Последний оператор в конструкции do должен быть выражением Я знаю, что этот...
1112 просмотров
schedule 28.04.2022

Сопоставление шаблонов в нотации do и let
Недавно я столкнулся с ошибкой при использовании threepenny-gui , и она была решена путем изменения кода из сопоставление шаблона в нотации do с <- с сопоставлением шаблона с нотацией let. Есть ли какие-либо причины, по которым я должен...
3437 просмотров

Что не так с этим отступом в Haskell?
В приведенном ниже коде Haskell я получаю сообщение об ошибке «ошибка синтаксического анализа при вводе« в »». Из того, что я прочитал, отступ, который я использовал, должен быть в порядке. На самом деле я успешно использую «let» и «in» с...
230 просмотров
schedule 04.11.2022

Почему метод fail должен существовать в классе монадного типа?
Итак, у меня есть эта строка кода: [Nothing] >>= \(Just x) -> [x] что, конечно, дает исключение, потому что шаблон ничего не соответствует. С другой стороны, этот код дает другой результат, []: do Just x <- [Nothing]...
119 просмотров

Haskell — странное поведение блока do
Читая Викикнигу по Haskell о MonadPlus , я обнаружил следующее. функция, которая в основном принимает Char и String и возвращает Just (char,tail) , если такой символ равен заголовку строки, или Nothing в противном случае: char :: Char...
124 просмотров
schedule 01.04.2023

Ошибки Haskell при привязке CSV-файла к дескриптору
Итак, я написал небольшой набор служебных функций для CSV-файлов и на протяжении всего времени тестировал функции, которые связывал файл вручную с помощью table' <- parseCSVFromFile filepath но (от Text.CSV ) parseCSVFromFile ::...
112 просмотров

В чем разница между обозначениями `let .. in do` и `‹-` в монадах Haskell?
Я пытаюсь реализовать функцию, которая преобразует строку в список Maybe Ints, например. readInts "1 2 42 foo" = [Just 1,Just 2,Just 42,Nothing] . Мой первый подход был: readInts (s::String) = do { ws <- words s; return (map...
170 просмотров

Haskell IORef — ответ против функции для получения ответа
Я пытаюсь понять, как на самом деле используются IORefs , и у меня возникают проблемы с использованием примера кода, который я нашел на https://www.seas.upenn.edu/~cis194/spring15/lectures/12.-unsafe.html newCounter :: IO (IO Int) newCounter =...
207 просмотров
schedule 17.05.2023

Как использовать Control.Monad.Cont в рекурсивной функции?
Я давал ответ на этот вопрос , и мне пришла идея использовать монаду Cont . Я недостаточно знаю Haskell, чтобы объяснить, почему эта программа не работает. import Control.Monad.Cont fib1 n = runCont (slow n) id where slow 0 = return 0...
127 просмотров

Парсинг в блоке case
Итак, я пишу свой собственный синтаксический анализатор, который почти готов, однако я продолжаю застревать с возвратом моей функции. Мой возврат - case , но в case мне нужно выполнить синтаксический анализ, который я не могу заставить работать....
79 просмотров

Что это значит?
В этом руководстве http://learnyouahaskell.com/starting-out автор пишет этот фрагмент кода. boomBangs xs = [ if x < 10 then "BOOM!" else "BANG!" | x <- xs, odd x] А затем позже выполняет это так boomBangs[7..13] И мой вопрос,...
98 просмотров
schedule 27.11.2022

Условное изменение состояния в Haskell
Я не знаю, как я могу внести условное изменение в State Monad в Haskell. Допустим, у меня есть стек на State Monad. import Control.Monad.State push :: Int -> State [Int] () push x = state $ \xs -> ((), x : xs) pop :: State [Int] Int pop =...
70 просмотров