xexpr.ss
(module xexpr mzscheme

  (require "private/require.ss")
  (require-contracts)
  (require-parameters)

  (require (lib "xml.ss" "xml"))

  (define xexpr/c
    (flat-named-contract "Xexpr" xexpr?))

  (provide/contract
   [xexpr/c flat-contract?]
   [xexpr? predicate/c]
   [write-xexpr ([xexpr/c] [output-port?] . opt-> . void?)])

  (define write-xexpr
    (param-lambda (xexpr [output => current-output-port])
      (write-xml/content (xexpr->xml xexpr))))

  )