Add remaining haskell book exercises
This commit is contained in:
30
Haskell-book/14/qc/tests/Idempotence.hs
Normal file
30
Haskell-book/14/qc/tests/Idempotence.hs
Normal file
@@ -0,0 +1,30 @@
|
||||
module Main where
|
||||
|
||||
import Data.Char
|
||||
import Data.List
|
||||
import Test.QuickCheck
|
||||
|
||||
capitalizeWord :: String -> String
|
||||
capitalizeWord [] = []
|
||||
capitalizeWord (x:xs) = toUpper x : xs
|
||||
|
||||
twice :: (a -> a) -> (a -> a)
|
||||
twice y = y . y
|
||||
|
||||
fourTimes :: (a -> a) -> (a -> a)
|
||||
fourTimes = twice . twice
|
||||
|
||||
f :: String -> Bool
|
||||
f x =
|
||||
(capitalizeWord x == twice capitalizeWord x)
|
||||
&& (capitalizeWord x == fourTimes capitalizeWord x)
|
||||
|
||||
f' :: Ord a => [a] -> Bool
|
||||
f' x =
|
||||
(sort x == twice sort x)
|
||||
&& (sort x == fourTimes sort x)
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
quickCheck f
|
||||
quickCheck (f' :: String -> Bool)
|
||||
Reference in New Issue
Block a user