{-# LANGUAGE MultiParamTypeClasses #-} {-| Module : FiniteCategories Description : The __1__ category contains a unique object and its identity. Copyright : Guillaume Sabbagh 2021 License : GPL-3 Maintainer : guillaumesabbagh@protonmail.com Stability : experimental Portability : portable The __1__ category contains a unique object and its identity. -} module UsualCategories.One ( One(..) ) where import FiniteCategory.FiniteCategory import IO.PrettyPrint -- | A type that serves the purpose of being the __1__ category, its object and its identity. data One = One deriving (Eq, Show) instance Morphism One One where source One = One target One = One (@) = const.const $ One instance FiniteCategory One One One where ob = const [One] identity = const.id ar = const.const.const $ [One] instance GeneratedFiniteCategory One One One where genAr = defaultGenAr decompose = defaultDecompose instance PrettyPrintable One where pprint One = "1"