{-# LANGUAGE AllowAmbiguousTypes #-} module Pandora.Paradigm.Structure.Ability.Rotatable where import Pandora.Pattern.Category ((.)) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe) import Pandora.Paradigm.Primary.Functor.Tagged (Tagged (Tag)) class Rotatable (f :: k) t where rotation :: (Tagged f) (t a) -> Maybe (t a) rotate :: forall f t a . Rotatable f t => t a -> Maybe (t a) rotate = rotation . Tag @f