fmap.ss
(module fmap mzscheme
  (require (lib "unitsig.ss"))
  (provide (all-defined))
  
  (define (fmap-do-not-replace x y) y)
  (define (fmap-replace x y) x)  

  (define-signature fmap^ (fmap? 
                           is-equal? elt-equal?
                           empty empty? singleton 
                           lookup 
                           insert remove
                           merge
                           foldr
                           ; subset?
                           ; intersect difference
                           ; minimum maximum
                           member?)))