Я начинаю изучать Haskell, решая 99 задач Haskell. http://www.haskell.org/haskellwiki/H-99:_Ninety-Nine_Haskell_Problems Я бы хотел написать тесты для каждой программы / функции с помощью quickcheck.
У меня такой код:
import Test.QuickCheck import Text.Printf main = mapM_ (\(s,a) -> printf "%-25s: " s >> a) tests -- 1 myLast lst = last lst prop_1a xs x = myLast (xs ++ [x]) == (x::String) myLast' = head . reverse prop_1b xs x = myLast' (xs ++ [x]) == (x::String) tests = [("1a", quickCheck prop_1a) ,("1b", quickCheck prop_1b) ]
Я мог бы написать myLast''
, myLast'''
и т. Д. Есть ли способ протестировать все эти методы без дублирования кода и свойств быстрой проверки?
Связанный вопрос: прямо сейчас я говорю quickcheck использовать Strings. Есть ли способ случайным образом использовать разные типы для тестирования?