Skip to content

Commit 17707ba

Browse files
committed
[ new ] variables!
1 parent b1950f8 commit 17707ba

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

lectures/Week6.agda

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
module Week6 where
2+
3+
open import Data.Nat.Base using (ℕ; _+_)
4+
open import Data.Bool.Base using (Bool; if_then_else_)
5+
open import Data.List.Base using (List; []; _∷_)
6+
7+
data Ty : Set where
8+
bool nat : Ty
9+
10+
11+
12+
infix 0 _∈_
13+
data _∈_ {A : Set} (a : A) : List A Set where
14+
-- nonsense : a ∈ []
15+
here : {xs} a ∈ (a ∷ xs)
16+
there : {x xs} a ∈ xs a ∈ (x ∷ xs)
17+
18+
data TExpr: List Ty) : Ty -> Set where
19+
var : {σ} σ ∈ Γ TExpr Γ σ
20+
------------------------ old same
21+
nat :-> TExpr Γ nat
22+
bool : Bool -> TExpr Γ bool
23+
add : TExpr Γ nat -> TExpr Γ nat ->
24+
-------------------------------------
25+
TExpr Γ nat
26+
ifte : forall {T} ->
27+
TExpr Γ bool ->
28+
TExpr Γ T -> TExpr Γ T ->
29+
------------------------------------
30+
TExpr Γ T
31+
32+
TVal : Ty Set
33+
TVal bool = Bool
34+
TVal nat =
35+
36+
Env :: List Ty) Set
37+
Env Γ = (x : Ty) x ∈ Γ TVal x
38+
39+
teval : forall {T Γ} -> Env Γ TExpr Γ T -> TVal T
40+
teval {T} ρ (var x) = ρ T x
41+
teval ρ (nat n) = n
42+
teval ρ (bool b) = b
43+
teval ρ (add en em) = teval ρ en + teval ρ em
44+
teval ρ (ifte eb et ee) = if teval ρ eb then teval ρ et else teval ρ ee

0 commit comments

Comments
 (0)