{-# htermination (or :: (List MyBool) -> MyBool) #-} import qualified Prelude data MyBool = MyTrue | MyFalse data List a = Cons a (List a) | Nil foldr :: (a -> b -> b) -> b -> (List a) -> b; foldr f z Nil = z; foldr f z (Cons x xs) = f x (foldr f z xs); pePe :: MyBool -> MyBool -> MyBool; pePe MyFalse x = x; pePe MyTrue x = MyTrue; or :: (List MyBool) -> MyBool; or = foldr pePe MyFalse;