Вопросы по теме 'do-notation'
Государственная монада, последовательности случайных чисел и монадический код
Я пытаюсь понять Монаду Состояния, и с этой целью я хотел написать монадический код, который генерировал бы последовательность случайных чисел с помощью Линейного Конгруэнтного Генератора (вероятно, не очень хорошо, но я намерен просто изучить Монаду...
2630 просмотров
schedule
14.04.2022
конструкция «делать» в Haskell
Я пытаюсь изучить Haskell и хочу написать небольшую программу, которая выводит содержимое файла на экран. Когда я загружаю его в GHCi, я получаю следующую ошибку:
Последний оператор в конструкции do должен быть выражением
Я знаю, что этот...
1112 просмотров
schedule
28.04.2022
Сопоставление шаблонов в нотации do и let
Недавно я столкнулся с ошибкой при использовании threepenny-gui , и она была решена путем изменения кода из сопоставление шаблона в нотации do с <- с сопоставлением шаблона с нотацией let.
Есть ли какие-либо причины, по которым я должен...
3437 просмотров
schedule
29.04.2022
Что не так с этим отступом в Haskell?
В приведенном ниже коде Haskell я получаю сообщение об ошибке «ошибка синтаксического анализа при вводе« в »». Из того, что я прочитал, отступ, который я использовал, должен быть в порядке. На самом деле я успешно использую «let» и «in» с...
230 просмотров
schedule
04.11.2022
Почему метод fail должен существовать в классе монадного типа?
Итак, у меня есть эта строка кода:
[Nothing] >>= \(Just x) -> [x]
что, конечно, дает исключение, потому что шаблон ничего не соответствует.
С другой стороны, этот код дает другой результат, []:
do
Just x <- [Nothing]...
119 просмотров
schedule
07.06.2023
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 просмотров
schedule
17.05.2022
В чем разница между обозначениями `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 просмотров
schedule
13.11.2022
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 просмотров
schedule
01.09.2022
Парсинг в блоке case
Итак, я пишу свой собственный синтаксический анализатор, который почти готов, однако я продолжаю застревать с возвратом моей функции. Мой возврат - case , но в case мне нужно выполнить синтаксический анализ, который я не могу заставить работать....
79 просмотров
schedule
24.09.2022
Что это значит?
В этом руководстве 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 просмотров
schedule
24.08.2022