~ruther/guix-local

023d9892c0411adb523e6bc8337be3e7e94e606f — Ludovic Courtès 11 years ago e87f059
store: Add 'store-lower'.

* guix/store.scm (store-lower): New procedure.
* tests/store.scm ("store-lower"): New test.
2 files changed, 14 insertions(+), 1 deletions(-)

M guix/store.scm
M tests/store.scm
M guix/store.scm => guix/store.scm +7 -0
@@ 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.
;;

M tests/store.scm => tests/store.scm +7 -1
@@ 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")