(define (pair x y)
  (vector x y))

(define (fst v)
  (vector-ref v 0))

(define (snd v)
  (vector-ref v 1))

(define (f g p)
  (pair (g (fst p))
        (g (snd p))))

(define (show x)
  (with-output-to-string
    (lambda () (write x))))

(write (f show (pair 1 #\a)))
(newline)