(type egg)
(signature "define-record-and-printer egg")
(timestamp 1612269487)
(sxml ((section 2 "Outdated egg!" (p "This is an egg for CHICKEN 4, the unsupported old release.  You're almost certainly looking for " (int-link "/eggref/5/define-record-and-printer" "the CHICKEN 5 version of this egg") ", if it exists.") (p "If it does not exist, there may be equivalent functionality provided by another egg; have a look at the " (link "https://wiki.call-cc.org/chicken-projects/egg-index-5.html" "egg index") ". Otherwise, please consider porting this egg to the current version of CHICKEN.")) (section 2 "define-record-and-printer" (p "Trivial macro to define records and appropriate printers") (toc) (section 3 (tt "define-record-and-printer") (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)))))))))"))) (section 3 "About this egg" (section 4 "Author" (p (int-link "/users/klutometis" "Peter Danenberg"))) (section 4 "Repository" (p (link "https://github.com/klutometis/define-record-and-printer"))) (section 4 "License" (p "BSD")) (section 4 "Dependencies" (ul (li (int-link "hahn")) (li (int-link "matchable")) (li (int-link "setup-helper")))) (section 4 "Versions" (dl (dt (link "https://github.com/klutometis/define-record-and-printer/releases/tag/0.1" "0.1")) (dd "Version 0.1") (dt (link "https://github.com/klutometis/define-record-and-printer/releases/tag/0.1.1" "0.1.1")) (dd "Release with docs") (dt (link "https://github.com/klutometis/define-record-and-printer/releases/tag/0.1.2" "0.1.2")) (dd "Add cock.") (dt (link "https://github.com/klutometis/define-record-and-printer/releases/tag/0.1.3" "0.1.3")) (dd "Remove the dependency on setup-helper-cock.") (dt (link "https://github.com/klutometis/define-record-and-printer/releases/tag/0.1.4" "0.1.4")) (dd "Use hahn."))) (section 4 "Colophon" (p "Documented by " (int-link "/egg/hahn" "hahn") "."))))))
