diff --git a/collects/tests/typed-scheme/succeed/empty-or.ss b/collects/tests/typed-scheme/succeed/empty-or.ss index ba96025d..f0195a6e 100644 --- a/collects/tests/typed-scheme/succeed/empty-or.ss +++ b/collects/tests/typed-scheme/succeed/empty-or.ss @@ -1,22 +1,25 @@ -#lang typed/scheme +#lang typed-scheme + +(require scheme/bool scheme/list typed/test-engine/scheme-tests) -(require scheme/list) (define-type-alias Atom (U Number #f)) (: mrg ([Listof Atom] [Listof Atom] -> [Listof Number])) ;; add corresponding numbers, drop false, stop at end of shortest list -;(check-expect (mrg (list 1 false 2) (list 3 4 5 false 10)) (list 4 4 7)) +(check-expect (mrg (list 1 false 2) (list 3 4 5 false 10)) (list 4 4 7)) (define (mrg l k) (cond - [(if (empty? l) #t (empty? k)) + [(or (empty? l) (empty? k)) empty] - [(and (number? (first l)) (number? (first k))) - (cons (+ (first l) (first k)) (mrg (rest l) (rest k)))] - [(number? (first l)) - (cons (first l) (mrg (rest l) (rest k)))] + [(and (not (car l)) (not (car k))) + (cons 0 (mrg (rest l) (rest k)))] + [(not (car l)) + (cons (car k) (mrg (rest l) (rest k)))] + [(not (car k)) + (cons (car l) (mrg (rest l) (rest k)))] [else - (error 'fail)])) + (cons (+ (car l) (car k)) (mrg (rest l) (rest k)))])) -;(test) \ No newline at end of file +(test) \ No newline at end of file