packages feed

pandora-0.3.5: Pandora/Paradigm/Structure/Ability/Convertible.hs

{-# LANGUAGE AllowAmbiguousTypes #-}

module Pandora.Paradigm.Structure.Ability.Convertible where

import Pandora.Pattern.Category ((.))
import Pandora.Paradigm.Primary.Functor.Tagged (Tagged (Tag))

class Convertible f t u a where
	conversion :: Tagged f (t a) -> u a

convert :: forall f t u a . Convertible f t u a => t a -> u a
convert = conversion . Tag @f