{-| Module: HasCups Description: A cup operation for a meaning type. License: GPL-3 Required operations for a meaning type to have some form of formal cups. These can be used for Lambek reductions on the meaning of the sentence. |-} module Discokitty.HasCups where class HasCups m where -- | Given an integer, performs that number of cups between the two -- meaning spaces. In a monoidal category, this should be the composition -- of the tensor product of two states with a certain number of cups. cup :: Int -> m -> m -> m -- | Neutral element for the cup operation. This could be given by the -- identity morphism (state). cunit :: m