{-# LANGUAGE NoImplicitPrelude, UnicodeSyntax #-}
module PreludePlus.Unicode
(
(∘)
, (↦)
, (↤)
, (↤∘)
, (≫=)
, (≫)
, (=≪)
, (∨)
, (∧)
, (≡)
, (≠)
, (≤)
, (≥)
, (÷)
, (٪)
, (—)
, (⌥)
, (∈)
, (∉)
, (⧺)
, (∪)
, (∩)
, (⩀)
, (∖)
, ø
) where
import Control.Applicative (Alternative, (<|>))
import Control.Monad (Monad, (>>=), (>>), (=<<))
import Data.Bool (Bool, (&&), (||), not)
import Data.Eq (Eq, (==), (/=))
import Data.Foldable (Foldable, elem, notElem)
import Data.Function ((.), ($), flip)
import Data.Functor (Functor, fmap)
import Data.Monoid (Monoid, mempty)
import Data.List ((\\), intersect, null, union)
import Data.Ord (Ord, (<=), (>=))
import Data.Semigroup (Semigroup, (<>))
import GHC.Num (Num, (-))
import GHC.Real (Integral, quot, mod)
infixr 9 ∘
(∘) ∷ (b → g) → (a → b) → (a → g)
(∘) = (.)
{-# INLINE (∘) #-}
infixl 4 ↦
(↦) ∷ Functor f => f a → (a → b) → f b
(↦) = flip fmap
{-# INLINE (↦) #-}
infixl 4 ↤
(↤) ∷ Functor f => (a → b) → f a → f b
(↤) = fmap
{-# INLINE (↤) #-}
infixr 7 ↤∘
(↤∘) ∷ Functor f => (a → b) → (c → f a) → c → f b
f ↤∘ g = fmap f ∘ g
infixl 1 ≫=
(≫=) ∷ Monad m => m a → (a → m b) → m b
(≫=) = (>>=)
{-# INLINE (≫=) #-}
infixl 1 ≫
(≫) ∷ Monad m => m a → m b → m b
(≫) = (>>)
{-# INLINE (≫) #-}
infixr 1 =≪
(=≪) ∷ Monad m => (a → m b) → m a → m b
(=≪) = (=<<)
{-# INLINE (=≪) #-}
infixr 2 ∨
(∨) ∷ Bool → Bool → Bool
(∨) = (||)
{-# INLINE (∨) #-}
infixr 3 ∧
(∧) ∷ Bool → Bool → Bool
(∧) = (&&)
{-# INLINE (∧) #-}
infix 4 ≡
(≡) ∷ Eq a => a → a → Bool
(≡) = (==)
{-# INLINE (≡) #-}
infix 4 ≠
(≠) ∷ Eq a => a → a → Bool
(≠) = (/=)
{-# INLINE (≠) #-}
infix 4 ≤
(≤) ∷ Ord a => a → a → Bool
(≤) = (<=)
{-# INLINE (≤) #-}
infix 4 ≥
(≥) ∷ Ord a => a → a → Bool
(≥) = (>=)
{-# INLINE (≥) #-}
infixl 7 ÷
(÷) ∷ Integral a => a → a → a
(÷) = quot
{-# INLINE (÷) #-}
infixl 7 ٪
(٪) ∷ Integral a => a → a → a
(٪) = mod
{-# INLINE (٪) #-}
(—) ∷ Num a => a → a → a
(—) = (-)
(⌥) ∷ Alternative f => f a → f a → f a
(⌥) = (<|>)
infix 4 ∈
(∈) ∷ (Foldable a, Eq b) => b → a b → Bool
(∈) = elem
{-# INLINE (∈) #-}
infix 4 ∉
(∉) ∷ (Foldable a, Eq b) => b → a b → Bool
(∉) = notElem
{-# INLINE (∉) #-}
infixr 5 ⧺
(⧺) ∷ Semigroup m => m → m → m
(⧺) = (<>)
{-# INLINE (⧺) #-}
infixr 5 ∖
(∖) ∷ Eq a => [a] → [a] → [a]
(∖) = (\\)
infixl 6 ∪
(∪) ∷ Eq a => [a] → [a] → [a]
(∪) = union
{-# INLINE (∪) #-}
infixr 6 ∩
(∩) ∷ Eq a => [a] → [a] → [a]
(∩) = intersect
infixr 6 ⩀
(⩀) ∷ Eq a => [a] → [a] → Bool
(⩀) a b = not ∘ null $ intersect a b
ø ∷ Monoid a => a
ø = mempty