From dcb95c1fc936d74dfdf84b7e59eff66cb99c5a63 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 2 May 2017 22:47:36 +0200 Subject: monads: Add a template and specialization mechanism for monadic procedures. * guix/monads.scm (%templates, %template-instances): New variables. (register-template!, register-template-instance!): New procedures. (template-directory, define-template): New macro. (foldm, sequence, anym): Define using 'define-template'. Avoid replace ellipses with dots. (mapm): Likewise, but do not use 'foldm'. * guix/store.scm: Add 'template-directory' invocation. --- guix/store.scm | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'guix/store.scm') diff --git a/guix/store.scm b/guix/store.scm index 683f071a83..8e7f09678e 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -1237,6 +1237,10 @@ be used internally by the daemon's build hook." (define-alias store-return state-return) (define-alias store-bind state-bind) +;; Instantiate templates for %STORE-MONAD since it's syntactically different +;; from %STATE-MONAD. +(template-directory instantiations %store-monad) + (define (preserve-documentation original proc) "Return PROC with documentation taken from ORIGINAL." (set-object-property! proc 'documentation -- cgit v1.2.3