{-# LANGUAGE NoImplicitPrelude, UnicodeSyntax #-}
module Data.Bool.Unicode ( (∧), (∨), (¬), (⊻), (⊼), (⊽) ) where
-------------------------------------------------------------------------------
-- Imports
-------------------------------------------------------------------------------
-- from base:
import Data.Bool ( Bool, (&&), (||), not )
-------------------------------------------------------------------------------
-- Fixities
-------------------------------------------------------------------------------
infixr 2 ∨
infixr 3 ⊽
infixr 3 ⊼
infixr 3 ⊻
infixr 3 ∧
-------------------------------------------------------------------------------
-- Symbols
-------------------------------------------------------------------------------
{-|
(¬) = 'not'
U+00AC, NOT SIGN
-}
(¬) ∷ Bool → Bool
(¬) = not
{-# INLINE (¬) #-}
{-|
(∧) = ('&&')
U+2227, LOGICAL AND
-}
(∧) ∷ Bool → Bool → Bool
(∧) = (&&)
{-# INLINE (∧) #-}
{-|
(∨) = ('||')
U+2228, LOGICAL OR
-}
(∨) ∷ Bool → Bool → Bool
(∨) = (||)
{-# INLINE (∨) #-}
{-|
a ⊻ b = (a ∨ b) ∧ not (a ∧ b)
U+22BB, XOR
-}
(⊻) ∷ Bool → Bool → Bool
a ⊻ b = (a || b) && not (a && b)
{-# INLINE (⊻) #-}
{-|
a ⊼ b = not (a ∧ b)
U+22bc, NAND
-}
(⊼) ∷ Bool → Bool → Bool
a ⊼ b = not (a && b)
{-# INLINE (⊼) #-}
{-|
a ⊽ b = not (a ∨ b)
U+22bd, NOR
-}
(⊽) ∷ Bool → Bool → Bool
a ⊽ b = not (a || b)
{-# INLINE (⊽) #-}