blob: 4b484d0bc45c54a6d4b6adf87e499d5da2286cc6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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)
|