(index ("define-record-and-printer" 0))
(def (sig (syntax "(define-record-and-printer name slotname) → record" (id define-record-and-printer))) (p "Define a record and a printer that shows the contents of the record as a vector; see " (tt "define-record") ".") (dl (dt (tt "name")) (dd "The name of the record") (dt (tt "slotname")) (dd "The name of the slot")) (highlight scheme "(define-syntax\n  define-record-and-printer\n  (lambda (expression rename compare)\n    (match expression\n           ((_ record . fields)\n            (let ((%define-record (rename 'define-record))\n                  (%define-record-printer (rename 'define-record-printer))\n                  (%begin (rename 'begin))\n                  (%lambda (rename 'lambda))\n                  (%write (rename 'write))\n                  (%record->vector (rename 'record->vector)))\n              `(,%begin\n                (,%define-record ,record ,@fields)\n                (,%define-record-printer\n                 ,record\n                 (,%lambda\n                  (record out)\n                  (,%write (,%record->vector record) out)))))))))"))
