diff options
Diffstat (limited to 'module/hnh/util/lens.scm')
-rw-r--r-- | module/hnh/util/lens.scm | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/module/hnh/util/lens.scm b/module/hnh/util/lens.scm index 26c75be7..00f7fe1e 100644 --- a/module/hnh/util/lens.scm +++ b/module/hnh/util/lens.scm @@ -42,10 +42,6 @@ -(define (make-lens getter setter) - (case-lambda ((datum) (getter datum)) - ((datum new-value) (setter datum new-value)))) - (define-syntax build-lens (syntax-rules () ((_ (getter gargs ...) @@ -97,8 +93,13 @@ (build-lens (list-ref idx) (list-change idx))) -(define car* (make-lens car (lambda (pair value) (cons value (cdr pair))))) -(define cdr* (make-lens cdr (lambda (pair value) (cons (car pair) value)))) +(define car* + (case-lambda ((pair) (car pair)) + ((pair value) (cons value (cdr pair))))) + +(define cdr* + (case-lambda ((pair) (cdr pair)) + ((pair value) (cons (car pair) value)))) (define (each obj lens proc) (modify obj lens |