From 98329e0a3dd4f78b5d815ac3896272ec70904901 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 11 Dec 2025 10:28:11 +0100 Subject: Add remaining haskell book exercises --- Haskell-book/14/qc/tests/Idempotence.hs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Haskell-book/14/qc/tests/Idempotence.hs (limited to 'Haskell-book/14/qc/tests/Idempotence.hs') diff --git a/Haskell-book/14/qc/tests/Idempotence.hs b/Haskell-book/14/qc/tests/Idempotence.hs new file mode 100644 index 0000000..4b484d0 --- /dev/null +++ b/Haskell-book/14/qc/tests/Idempotence.hs @@ -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) \ No newline at end of file -- cgit v1.2.3