open import Data.Nat
module SimplyTyped.Evaluation
(Base : ℕ → Set)
where
open import SimplyTyped.TypeSystem
import SimplyTyped.Environment
open import SimplyTyped.ApplicativeStructure
⟦_⟧⋆ : Ty → Set
⟦ base n ⟧⋆ = Base n
⟦ σ ⟶ τ ⟧⋆ = ⟦ σ ⟧⋆ → ⟦ τ ⟧⋆
open SimplyTyped.Environment ⟦_⟧⋆
appStr : ApplicativeStructure
appStr = record
{ Dom = λ Γ τ → Env Γ → ⟦ τ ⟧⋆
; Var = lookup
; Lam = λ f ρ v → f (ρ ▷ v)
; App = λ f x ρ → f ρ (x ρ)
}
module ForIllustrationOnly where
⟦_⟧ : ∀ {Γ τ} → Γ ⊢ τ → Env Γ → ⟦ τ ⟧⋆
⟦ var x ⟧ ρ = lookup x ρ
⟦ ƛ t ⟧ ρ = λ v → ⟦ t ⟧ (ρ ▷ v)
⟦ t₁ · t₂ ⟧ ρ = ⟦ t₁ ⟧ ρ (⟦ t₂ ⟧ ρ)