{-# LANGUAGE NPlusKPatterns #-} -- The factorial function: fac n = 1 * 2 * .... * n -- fac n = 1 * 2 * .... * (n-1) * n -- fac n = fac (n-1) * n (if n>0) -- fac 0 = 1 --fac :: Integer -> Integer fac n = if n==0 then 1 else n * fac (n-1) facg n | n==0 = 1 | n>0 = n * facg (n-1) facp 0 = 1 facp (n+1) = (n+1) * facp n -- Boolean conjunction: and1 True True = True and1 True False = False and1 False True = False and1 False False = False and2 True x = x and2 False x = False and3 x y = if x==True then y else False f True = 0 f False = 1 f True = 2