{-# LANGUAGE TemplateHaskell #-}

-- | Identity function

module Language.Syntactic.Constructs.Identity where



import Language.Syntactic



-- | Identity function
data Identity sig
  where
    Id :: Identity (a :-> Full a)

instance Constrained Identity
  where
    type Sat Identity = Top
    exprDict _ = Dict

instance Semantic Identity
  where
    semantics Id = Sem "id" id

semanticInstances ''Identity