У меня есть два свойства, которым должна удовлетворять функция foo
:
prop_1 :: [Int] -> Bool
prop_1 xs = foo xs id == xs
prop_2 :: [Int] -> (Int -> Int) -> (Int -> Int) -> Bool
prop_2 xs f g = foo (foo xs f) g == foo xs (g . f)
Я пытаюсь проверить, удовлетворяют ли вышеуказанные свойства следующей функции, используя quickCheck:
foo :: [a] -> (a -> b) -> [b]
foo xs f = []
Когда я попытался запустить quickCheck с prop_2, я получил следующую ошибку:
quickCheck(prop_2)
<interactive>:18:1: error:
No instance for (Show (Int -> Int))
arising from a use of 'quickCheck'
(maybe you haven't applied a function to enough arguments?)
In the expression: quickCheck (prop_2)
In an equation for 'it': it = quickCheck (prop_2)
Я не уверен, почему я получаю эту ошибку и как я могу ее исправить.Любые идеи приветствуются.