{-|
Module      : Language.Grammars.AspectAG.Label
Description : Labels (polykinded, phantom)
Copyright   : (c) Juan García Garland, Marcos Viera 2020
License     : GPL-3
Maintainer  : jpgarcia@fing.edu.uy
Stability   : experimental
Portability : POSIX
-}

{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE DataKinds #-}

module Data.GenRec.Label where
import Data.Proxy

data Label l = Label

sndLabel :: Label '(a,b) -> Label b
sndLabel _ = undefined

fstLabel :: Label '(a,b) -> Label a
fstLabel _ = undefined

labelFromType :: a -> Label a
labelFromType _ = Label

proxyToLabel :: Proxy a -> Label a
proxyToLabel _ = Label