44 lines
1.3 KiB
Scheme
44 lines
1.3 KiB
Scheme
(module arithmetic mzscheme
|
|
(require "../reduction-semantics.ss"
|
|
"../gui.ss")
|
|
|
|
(define lang
|
|
(language
|
|
(e (binop e e)
|
|
(sqrt e)
|
|
number)
|
|
(binop +
|
|
-
|
|
*
|
|
/)
|
|
|
|
(e-ctxt (binop e e-ctxt)
|
|
(binop e-ctxt e)
|
|
(sqrt e-ctxt)
|
|
hole)
|
|
(v number)))
|
|
|
|
(define reductions
|
|
(list
|
|
(reduction lang
|
|
(in-hole e-ctxt_1
|
|
(+ number_1 number_2))
|
|
(plug (term e-ctxt_1) (+ (term number_1) (term number_2))))
|
|
(reduction/context lang
|
|
e-ctxt
|
|
(- number_1 number_2)
|
|
(- (term number_1) (term number_2)))
|
|
(reduction/context lang
|
|
e-ctxt
|
|
(* number_1 number_2)
|
|
(* (term number_1) (term number_2)))
|
|
(reduction/context lang
|
|
e-ctxt
|
|
(/ number_1 number_2)
|
|
(/ (term number_1) (term number_2)))
|
|
(reduction/context lang
|
|
e-ctxt
|
|
(sqrt number_1)
|
|
(sqrt (term number_1)))))
|
|
|
|
(traces lang reductions '(- (* (sqrt 36) (/ 1 2)) (+ 1 2)))) |