diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-01-14 14:25:58 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-01-14 14:25:58 +0100 |
commit | 023d9892c0411adb523e6bc8337be3e7e94e606f (patch) | |
tree | d19588bf31c79f6d875c3f0df7b683fc38d05860 | |
parent | e87f0591f3117ed61285f33c7cc3548f72e551ad (diff) | |
download | patches-023d9892c0411adb523e6bc8337be3e7e94e606f.tar patches-023d9892c0411adb523e6bc8337be3e7e94e606f.tar.gz |
store: Add 'store-lower'.
* guix/store.scm (store-lower): New procedure.
* tests/store.scm ("store-lower"): New test.
-rw-r--r-- | guix/store.scm | 7 | ||||
-rw-r--r-- | tests/store.scm | 8 |
2 files changed, 14 insertions, 1 deletions
diff --git a/guix/store.scm b/guix/store.scm index d3e94625a7..82ed94bbc1 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -99,6 +99,7 @@ store-bind store-return store-lift + store-lower run-with-store %guile-for-build text-file @@ -881,6 +882,12 @@ in the store monad." (procedure-property proc 'documentation)) result) +(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)))) + ;; ;; Store monad operators. ;; diff --git a/tests/store.scm b/tests/store.scm index cb5370d5cc..f43fcb14d0 100644 --- a/tests/store.scm +++ b/tests/store.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -595,6 +595,12 @@ Deriver: ~a~%" (null? (valid-derivers %store file)) (null? (referrers %store file)))))) +(test-equal "store-lower" + "Lowered." + (let* ((add (store-lower text-file)) + (file (add %store "foo" "Lowered."))) + (call-with-input-file file get-string-all))) + (test-end "store") |