(import match-generics) (define-dx (normal a) a) (define-dx (what) 3) (unless (= 3 (normal 3) (what)) (print "Something weird with define-dx")) (define-dx (foo . args) (cdr args)) (define-dx ((foo a) b) (list a b)) (define-dx (foo a b) (list b a)) (unless (equal? (list (map (foo 3) '(1 2 3)) (map foo '(a j) '(t b))) '(((3 1) (3 2) (3 3)) ((t a) (b j)))) (print "define-dx can't destructure car")) (define-dx (strange a b) (list 'product (* a b))) (define-dx (strange a b) (list 'sum (require even? (+ a b)))) (define-dx (mysterious a b) 'vanilla) (define-dx (mysterious a b) (require even? (* a b)) (require even? (+ a b)) (require (< a b) 'neapolitan)) (unless (equal? '(((sum 6) (product 10) (sum 10) (sum 12)) (vanilla vanilla neapolitan)) (list (map strange '(1 2 3 4) '(5 5 7 8)) (map mysterious '(1 2 2) '(2 3 4)))) (print "Require is borking")) (define-dx (frobb oi j) (* oi j)) (define-dx (frobb i j) (require even? (+ i j))) (define-dx (frobb i j) (require (zero? i) 17)) (define-dx (knives d f) (if (zero? d) f d)) (define-dx (knives 2 3) 5) (define-dx (((tricky a) j) c) (let ((x 4)) (* x a j c))) (define-dx (((tricky x) b) e f) (+ x b e f)) (define-dx (((tricky x) b) e f) (require odd? (* x b e f))) (import (chicken string)) (define-dx ((hello target #!key (month "December") (meaning "feel free") (particular "weird") (day "every day"))) (conc "Hello, " target "! Won't you " meaning " " day " in " month "?")) (define-dx (vanilla a) (conc "Great: " a)) (define-dx (vanilla b a) (conc "Double great: " a b)) (define-dx (wonder c) 9) (define-dx (wonder a) (require even? a)) (define-dx ((hiss a b) d) 'abd) (define-dx ((hiss a b) d) (require even? (+ a b d))) (define-dx ((hiss j k) 2) 'jk2) (define-dx ((vegemite i) j) (+ i j)) (define-dx ((vegemite _) x y) (* x y)) (let ((lis (list (frobb 2 4) (frobb 3 6) (frobb 0 2) ((vegemite 3) 5) ((vegemite 3) 4 5) (map (hiss 1 2) '(2 3 4)) ((hello 'snow)) (knives 0 3) (knives 3 4) (knives 2 3) (((tricky 3) 4) 10 2) (((tricky 3) 2) 10) (map wonder (list 0 1 2 3 4 5))))) (unless (equal? '(6 18 17 8 20 (jk2 6 abd) "Hello, snow! Won't you feel free every day in December?" 3 3 5 19 240 (0 9 2 9 4 9)) lis) (print "Some complicated test is failing")))