data Foo = Bar | Baz deriving (Show) fNot :: Foo -> Foo fNot Baz = Bar fNot Bar = Baz fAnd :: Foo -> Foo -> Foo fAnd Bar Bar = Bar fAnd Bar Baz = Baz fAnd Baz Bar = Baz fAnd Baz Baz = Baz fOr :: Foo -> Foo -> Foo fOr Bar Bar = Bar fOr Bar Baz = Bar fOr Baz Bar = Bar fOr Baz Baz = Baz fXor :: Foo -> Foo -> Foo fXor Bar Bar = Baz fXor Bar Baz = Bar fXor Baz Bar = Bar fXor Baz Baz = Baz