test-2-provide.rkt (684B)
1 #lang racket 2 3 (require polysemy 4 rackunit) 5 6 (provide (all-defined-out)) 7 8 (define-poly foo) 9 (define-poly foo match-expander (λ (stx) #'"originally foo")) 10 (define-poly-case (foo [v integer?]) (+ v 10)) 11 (define-poly-case (foo [v string?]) (string-length v)) 12 13 (define-poly bar) 14 (define-poly-case (bar [v integer?]) (+ v 20)) 15 (define-poly-case (bar [v string?]) (string-append "bar-" v)) 16 17 (define-poly baz) 18 (define-poly-case (baz [v integer?]) (+ v 20)) 19 (define-poly-case (baz [v number?]) (+ v 20)) 20 (define-poly-case (baz [v string?]) (string-append "baz-" v)) 21 22 (check-equal? (foo 1) 11) 23 (check-equal? (foo "abc") 3) 24 (check-equal? (bar 1) 21) 25 (check-equal? (bar "abc") "bar-abc")