-- Example program to demonstrate the inference of call types
-- due to calling other call-type restricted operations.
isTrue True = True
trueTrue True True = True
trueFalse True False = True
g x = isTrue x
h x = trueTrue x x
k x y = trueTrue x y
j1 x = trueFalse x x
j2 x y = trueFalse x y
j3 x y = j2 x y
maxList :: Ord a => [a] -> a
maxList xs = foldl1 max xs