Compare commits

...

3 Commits

Author SHA1 Message Date
d8d1d840bb Full code coverage 2025-01-14 12:42:33 -04:00
aa3f4758e5 Add minutes spent and minor syntax 2025-01-14 12:31:45 -04:00
1820d98dfb Pass 1.2 tests 2025-01-14 12:29:19 -04:00

View File

@ -1,5 +1,7 @@
#lang plait
(define minutes-spent 60)
#| BNF for the AE language:
ae: NUMBER
| { ae + ae }
@ -40,7 +42,12 @@
[(Add l r) (+ (eval l) (eval r))]
[(Sub l r) (- (eval l) (eval r))]
[(Mul l r) (* (eval l) (eval r))]
[(Div l r) (/ (eval l) (eval r))]))
[(Div l r) (if (equal? 0 (eval r))
(cond
[(< 0 (eval l)) +inf.0]
[(> 0 (eval l)) -inf.0]
[else +nan.0])
(/ (eval l) (eval r)))]))
;; evaluate an AE program contained in an s-expr
(define (run sx)
@ -53,4 +60,6 @@
(test (run `{8 / 2}) 4)
(test (run `{-8 / 0}) -inf.0)
(test (run `{8 / {5 - 5}}) +inf.0)
(test (run `{1 / {1 / 0}}) 0.0)
(test (run `{1 / {1 / 0}}) 0.0)
(test (run `{0 / 0}) +nan.0) ; Special 0/0 case
(test/exn (run `{+ 1 1}) "parse") ; Parse error