diff options
| author | 2024-12-29 17:41:04 -0500 | |
|---|---|---|
| committer | 2024-12-29 17:41:04 -0500 | |
| commit | f761933a5b480d51ae009c3d6b6bfb83bd440e08 (patch) | |
| tree | c3beee4d924328ffd5c3e70b84c0387ceca88d3b /mcgoron.cond-thunk.values.scm | |
| parent | generalize generated files (diff) | |
define-record-type/destructor
Diffstat (limited to '')
| -rw-r--r-- | mcgoron.cond-thunk.values.scm | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/mcgoron.cond-thunk.values.scm b/mcgoron.cond-thunk.values.scm index ca4469a..8330ba1 100644 --- a/mcgoron.cond-thunk.values.scm +++ b/mcgoron.cond-thunk.values.scm @@ -74,3 +74,19 @@ (when-ct (null? rest) (apply values whole-list))))) +(define-syntax define-record-type/destructor + (syntax-rules () + ((_ type-name cstr predicate? destructor=> + (arg-name accessor . rest) + ...) + (begin + (define-record-type type-name + str + predicate? + (arg-name accessor . rest) + ...) + (define (destructor=> record) + (cond-values + (after ((when (predicate? record))) + (values (accessor record) ...)))))))) + |
