{-# OPTIONS_GHC -Wno-orphans #-} -- | Semantics for Identity (aka. R, or meta-circular representation). module SemanticEval where import Data.Functor.Identity import Syntax instance Abstractable Identity where lam f = Identity (runIdentity . f . Identity) (.@) f x = Identity ((runIdentity f) (runIdentity x)) {- Defined in Data.Functor.Identity instance Num a => Num (Identity a) instance Fractional a => Fractional (Identity a) -} eval :: Identity a -> a eval = runIdentity