Thanks for the information, i did try that before i posted but it still did not work.

for some reason the not function works on its own, but when i put it with the following code below, i get the following error.

Syntax error in input (unexpected `=`)

> and :: Bool -> Bool -> Bool
> and a b = a&&b

> or :: Bool -> Bool -> Bool
> or a b = a||b

> not :: Bool -> Bool
> not True = False
> not False = True

> nand :: Bool -> Bool -> Bool
> nand a b = not (a `and` b)

> nor :: Bool -> Bool -> Bool
> nor a b = not (a `and` b)

> xor :: Bool -> Bool -> Bool
> xor a b = (a `or` b) `and` (not (a `and` b))