[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/03: store: Change 'store-lower' to preserve the original procedure's
From: |
Ludovic Courtès |
Subject: |
01/03: store: Change 'store-lower' to preserve the original procedure's documentation. |
Date: |
Sun, 18 Jan 2015 21:22:32 +0000 |
civodul pushed a commit to branch master
in repository guix.
commit 5808dcc27cf7288afcd3fa01c0b9e4669b697765
Author: Ludovic Courtès <address@hidden>
Date: Sun Jan 18 17:38:15 2015 +0100
store: Change 'store-lower' to preserve the original procedure's
documentation.
* guix/store.scm (preserve-documentation): New procedure.
(store-lift, store-lower): Use it.
---
guix/store.scm | 23 +++++++++++++----------
1 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/guix/store.scm b/guix/store.scm
index c3a1c57..63425b3 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -862,23 +862,26 @@ be used internally by the daemon's build hook."
(define-alias store-return state-return)
(define-alias store-bind state-bind)
+(define (preserve-documentation original proc)
+ "Return PROC with documentation taken from ORIGINAL."
+ (set-object-property! proc 'documentation
+ (procedure-property original 'documentation))
+ proc)
+
(define (store-lift proc)
"Lift PROC, a procedure whose first argument is a connection to the store,
in the store monad."
- (define result
- (lambda args
- (lambda (store)
- (values (apply proc store args) store))))
-
- (set-object-property! result 'documentation
- (procedure-property proc 'documentation))
- result)
+ (preserve-documentation proc
+ (lambda args
+ (lambda (store)
+ (values (apply proc store args) store)))))
(define (store-lower proc)
"Lower PROC, a monadic procedure in %STORE-MONAD, to a \"normal\" procedure
taking the store as its first argument."
- (lambda (store . args)
- (run-with-store store (apply proc args))))
+ (preserve-documentation proc
+ (lambda (store . args)
+ (run-with-store store (apply proc args)))))
;;
;; Store monad operators.