www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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")