Я тестировал следующие реализацииHaskell различных реализаций sequence_
sequence_' :: Monad m => [m a] -> m()
sequence_'b [] = return()
sequence_'b (m : ms) = (foldl (>>) m ms) >> return()
sequence_'d [] = return()
sequence_'d (m : ms) = m >> sequence_'d ms
sequence_'e [] = return()
sequence_'e (m : ms) = m >>= \ _ -> sequence_'e ms
sequence_'g ms = foldr (>>) (return()) ms
Чтобы проверить это, я использовал следующее:
sequence_'e [putChar 'a', putChar 'b', putChar 'c']
и
sequence_'e [getChar, getChar, getChar]
Вышеуказанные тесты работали. Первый поместил значение abc на экран HUGS, и курсор вернется к следующей строке.
Второй принят тремя символами, напечатанными на экране HUGS, и курсор возвращается к следующей строке.
Просьба предложить больше тестов, которые я мог бы выполнить для проверки этих реализаций sequence_ (я предполагаю, что это последовательность Monad).
Благодаря
Я использую HUGS. Я думаю, что это Haskell 98. –
У меня возникла следующая ошибка, когда я попытался импортировать Control.Monad.Writer через сценарий. Файл ERROR: {Hugs} \ packages \ mtl \ Control \ Monad \ Reader.hs: 47 - Haskell 98 не поддерживает зависимые параметры –
Ой, попробуйте Control.Monad.Trans.Writer, тогда я думаю. Trans - это пакет трансформаторов, который не использует столько пугающих функций – luqui