I am wondering how this works.
x 9001 = True
x _ = False
g 42 = True
g _ = False
(liftA2 (||) x g) 42 = True
liftA2 :: Applicative f => (a -> b -> c) -> f a -> f b -> f c
x :: (Eq a, Num a) => a -> Bool
g :: (Eq a, Num a) => a -> Bool
How does the type of x and g (a -> Bool) correspond to what liftA2 expects (f a)?