31 lines
414 B
Racket
31 lines
414 B
Racket
#lang racket
|
||
|
||
(require redex)
|
||
(provide TL)
|
||
|
||
(define-language TL
|
||
(e a
|
||
(a ... e)
|
||
(letrec ([σ v] ...) e)
|
||
(w-c-m a a e)
|
||
(c-c-m [a ...])
|
||
(match a l ...)
|
||
(abort e))
|
||
|
||
(l [(K x ...) e])
|
||
(a w
|
||
(K a ...))
|
||
(w v
|
||
x)
|
||
(v (λ (x ...) e)
|
||
(K v ...)
|
||
σ)
|
||
|
||
(x variable-not-otherwise-mentioned)
|
||
(σ (ref variable))
|
||
|
||
(Σ ∅
|
||
(Σ [σ ↦ v]))
|
||
|
||
(K string))
|