g 0 [] = 0 g _ (x:xs) = x h x = h x -- The evaluation of `m` terminates in Curry but not in Haskell: m = g (h 0) [1] -- flexible not (as Prelude.not): fnot :: Bool -> Bool fnot False = True fnot True = False -- rigid not: rnot :: Bool -> Bool rnot x = case x of False -> True True -> False