Moved stlc to tests
This commit is contained in:
parent
97ddf170b2
commit
f8b19801fd
|
@ -1,18 +1,19 @@
|
||||||
#lang s-exp "../cur.rkt"
|
#lang cur
|
||||||
(require
|
(require
|
||||||
"../stdlib/nat.rkt"
|
rackunit
|
||||||
"../stdlib/sugar.rkt"
|
cur/stdlib/nat
|
||||||
"../oll.rkt"
|
cur/stdlib/sugar
|
||||||
"../stdlib/maybe.rkt"
|
cur/oll
|
||||||
"../stdlib/bool.rkt"
|
cur/stdlib/maybe
|
||||||
"../stdlib/prop.rkt")
|
cur/stdlib/bool
|
||||||
|
cur/stdlib/prop)
|
||||||
|
|
||||||
(define-language stlc
|
(define-language stlc
|
||||||
#:vars (x)
|
#:vars (x)
|
||||||
#:output-coq "stlc.v"
|
#:output-coq "stlc.v"
|
||||||
#:output-latex "stlc.tex"
|
#:output-latex "stlc.tex"
|
||||||
(val (v) ::= true false unit)
|
(val (v) ::= true false unit)
|
||||||
;; TODO: Allow datum as terminals
|
;; TODO: Allow datum, like 1, as terminals
|
||||||
(type (A B) ::= boolty unitty (-> A B) (* A A))
|
(type (A B) ::= boolty unitty (-> A B) (* A A))
|
||||||
(term (e) ::= x v (app e e) (lambda (x : A) e) (cons e e)
|
(term (e) ::= x v (app e e) (lambda (x : A) e) (cons e e)
|
||||||
(let (x x) = e in e)))
|
(let (x x) = e in e)))
|
||||||
|
@ -126,19 +127,17 @@
|
||||||
#'stlc-unitty
|
#'stlc-unitty
|
||||||
#'e)])))
|
#'e)])))
|
||||||
|
|
||||||
(module+ test
|
(check-equal?
|
||||||
(require rackunit)
|
(begin-stlc (lambda (x : 1) x))
|
||||||
(check-equal?
|
(stlc-lambda (avar z) stlc-unitty (Var-->-stlc-term (avar z))))
|
||||||
(begin-stlc (lambda (x : 1) x))
|
(check-equal?
|
||||||
(stlc-lambda (avar z) stlc-unitty (Var-->-stlc-term (avar z))))
|
(begin-stlc ((lambda (x : 1) x) ()))
|
||||||
(check-equal?
|
(stlc-app (stlc-lambda (avar z) stlc-unitty (Var-->-stlc-term (avar z)))
|
||||||
(begin-stlc ((lambda (x : 1) x) ()))
|
(stlc-val-->-stlc-term stlc-unit)))
|
||||||
(stlc-app (stlc-lambda (avar z) stlc-unitty (Var-->-stlc-term (avar z)))
|
(check-equal?
|
||||||
(stlc-val-->-stlc-term stlc-unit)))
|
(begin-stlc '(() ()))
|
||||||
(check-equal?
|
(stlc-cons (stlc-val-->-stlc-term stlc-unit)
|
||||||
(begin-stlc '(() ()))
|
(stlc-val-->-stlc-term stlc-unit)))
|
||||||
(stlc-cons (stlc-val-->-stlc-term stlc-unit)
|
(check-equal?
|
||||||
(stlc-val-->-stlc-term stlc-unit)))
|
(begin-stlc #t)
|
||||||
(check-equal?
|
(stlc-val-->-stlc-term stlc-true))
|
||||||
(begin-stlc #t)
|
|
||||||
(stlc-val-->-stlc-term stlc-true)))
|
|
Loading…
Reference in New Issue
Block a user