{-# LANGUAGE TypeFamilies #-}
module Data.Functor.Rep where

import Data.Cotraversable

class Cotraversable f => Representable f where
    type Rep f
    tabulate :: (Rep f -> a) -> f a
    index :: f a -> Rep f -> a