-- data Maybe a = Nothing | Just a

g :: Maybe Int -> Bool
g x = case x of 
  Nothing -> False
  Just z  -> (z > 3)

x1 ::  Maybe Int 
x1 = Just 2
x2 = Just Nothing

--------------------
mfold :: b -> ( a -> b ) -> Maybe a -> b
mfold n j x = case x of 
  Nothing -> n
  Just z  -> j z 

g' :: Maybe Int -> Bool
g' = mfold False ( > 3)

t1 = mfold 0 length $ Just "foo"
t2 = mfold False (\x -> mod x 2 == 0) $ Just 5