
andthen b1 b2 = if b1 then b2 else False

z = let x = 2
        y = 4
    in (x /= 0) `andthen` (y/x > 1)

z1 = let x = 0
         y = 4
     in (x /= 0) `andthen` (y/x > 1)


andthen' b1 b2 = if (b1 undefined) then (b2 undefined) else False

z2 = let x = 2
         y = 4
     in (\z -> (x /= 0)) `andthen'` (\z -> (y/x > 1))

z3 = let x = 0
         y = 4
     in (\z -> (x /= 0)) `andthen'` (\z -> (y/x > 1))

