quickCheck errors out with segmentation fault: 11
I am working through "Haskell - the craft of functional programming", and
have hit a really weird issue:
I have the following two functions defined:
averageThree :: Integer -> Integer -> Integer -> Float
averageThree a b c = (fromIntegral (a + b + c)) / 3
howManyAboveAverage :: Integer -> Integer -> Integer -> Integer
howManyAboveAverage a b c
| (a == b) && (b == c) && (a == c) = 0
| (fromIntegral a > (averageThree a b c) && (fromIntegral b >
(averageThree a b c) || fromIntegral c > (averageThree a b c))) ||
(fromIntegral b > (averageThree a b c) && fromIntegral c >
(averageThree a b c)) = 2
| otherwise = 1
Which seem to both produce the desired results. I then have the following
quickCheck properties defined:
prop_averageThree1, prop_averageThree2, prop_averageThree3,
prop_howManyAboveAverage :: Integer -> Integer -> Integer -> Bool
prop_averageThree1 a b c = (((averageThree a b c) * (fromIntegral 3)) ==
(fromIntegral (a + b + c)))
prop_averageThree2 a b c = (fromIntegral a >= averageThree a b c) ||
(fromIntegral b >= averageThree a b c) || (fromIntegral c >= averageThree
a b c)
prop_averageThree3 a b c = (fromIntegral a <= averageThree a b c) ||
(fromIntegral b <= averageThree a b c) || (fromIntegral c <= averageThree
a b c)
prop_howManyAboveAverage a b c = (0 <= howManyAboveAverage a b c) && (2 >=
howManyAboveAverage a b c)
All of these properties when run with quickCheck prop_name produce:
Segmentation fault: 11
My module definition is as follows:
module Chapter3 where
import Data.Char
import Test.QuickCheck
What is causing this error message?
No comments:
Post a Comment