25 lines
		
	
	
		
			711 B
		
	
	
	
		
			Agda
		
	
	
	
	
	
		
		
			
		
	
	
			25 lines
		
	
	
		
			711 B
		
	
	
	
		
			Agda
		
	
	
	
	
	
|  | module Language.Values where
 | |||
|  | 
 | |||
|  | open import Data.Integer using (ℤ)
 | |||
|  | open import Data.Bool using (Bool)
 | |||
|  | open import Data.List using (List; []; _∷_)
 | |||
|  | 
 | |||
|  | data Value : Set where
 | |||
|  |     int : ℤ → Value
 | |||
|  |     bool : Bool → Value
 | |||
|  | 
 | |||
|  | data ValueType : Set where
 | |||
|  |     tint tbool : ValueType
 | |||
|  | 
 | |||
|  | variable
 | |||
|  |     s s' s'' : List Value
 | |||
|  |     st st' st'' : List ValueType
 | |||
|  |     b b₁ b₂ : Bool
 | |||
|  |     z z₁ z₂ : ℤ
 | |||
|  | 
 | |||
|  | -- what it means for list of value types to describe a list of values
 | |||
|  | data ⟦_⟧ˢ : List ValueType → List Value → Set where
 | |||
|  |     ⟦⟧ˢ-empty : ⟦ [] ⟧ˢ []
 | |||
|  |     ⟦⟧ˢ-int : ⟦ st ⟧ˢ s → ⟦ tint ∷ st ⟧ˢ (int z ∷ s)
 | |||
|  |     ⟦⟧ˢ-bool : ⟦ st ⟧ˢ s → ⟦ tbool ∷ st ⟧ˢ (bool b ∷ s)
 |