pi/src/Value.idr

32 lines
656 B
Idris

module Value
import Term
import Misc
import Data.Vect
%default total
mutual
public export
data Value : (tags : Vect n Nat) -> Type where
VType : Value v
VGen : Nat -> Value v
VApp : Value v -> Value v -> Value v
VClos : Ctx n v -> Term n v -> Value v
public export
Ctx : Index -> Vect n Nat -> Type
Ctx i v = Vect i (Value v)
public export
ctx0 : Ctx 0 v
ctx0 = []
public export
Show (Value v) where
show VType = "VType"
show (VGen i) = "VGen " ++ show i
show (VApp f x) = "VApp (" ++ show f ++ ") (" ++ show x ++ ")"
show (VClos e t) = "VClos (" ++ assert_total (show e) ++ ") (" ++ show t ++ ")"