racket/collects/redex/examples/arithmetic.ss
Matthew Flatt cf2e98eb92 size-cache-invalid for editor<%>
svn: r13120
2009-01-14 20:29:37 +00:00

43 lines
941 B
Scheme

#lang scheme
(require redex)
(define-language lang
(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
(reduction-relation
lang
(c--> (+ number_1 number_2)
,(+ (term number_1) (term number_2))
"add")
(c--> (- number_1 number_2)
,(- (term number_1) (term number_2))
"subtract")
(c--> (* number_1 number_2)
,(* (term number_1) (term number_2))
"multiply")
(c--> (/ number_1 number_2)
,(/ (term number_1) (term number_2))
"divide")
(c-->(sqrt number_1)
,(sqrt (term number_1))
"sqrt")
with
[(--> (in-hole e-ctxt_1 a) (in-hole e-ctxt_1 b))
(c--> a b)]))
(traces/ps reductions (term (- (* (sqrt 36) (/ 1 2)) (+ 1 2)))
"/home/mflatt/Desktop/p.ps")