summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-11-05 23:46:55 +0100
committerLudovic Courtès <ludo@gnu.org>2012-11-05 23:50:57 +0100
commit0af2c24ef788bffbdb30b4662d15fcd194a51e48 (patch)
tree7f76abb82fe1a2662cf922d1843bbac945ddecb7
parenta48dddfe9cf19b9c301ca170eacc05604b5cefac (diff)
downloadguix-0af2c24ef788bffbdb30b4662d15fcd194a51e48.tar.gz
utils: Add `default-keyword-arguments' and `substitute-keyword-arguments'.
* distro/packages/base.scm (default-keyword-arguments,
  substitute-keyword-arguments): Move to...
* guix/utils.scm: ... here.
-rw-r--r--distro/packages/base.scm31
-rw-r--r--guix/utils.scm33
2 files changed, 33 insertions, 31 deletions
diff --git a/distro/packages/base.scm b/distro/packages/base.scm
index 3f79449250..195f870676 100644
--- a/distro/packages/base.scm
+++ b/distro/packages/base.scm
@@ -564,37 +564,6 @@ with the Linux kernel.")
 ;;; Bootstrap packages.
 ;;;
 
-(define (default-keyword-arguments args defaults)
-  "Return ARGS augmented with any keyword/value from DEFAULTS for
-keywords not already present in ARGS."
-  (let loop ((defaults defaults)
-             (args     args))
-    (match defaults
-      ((kw value rest ...)
-       (loop rest
-             (if (assoc-ref kw args)
-                 args
-                 (cons* kw value args))))
-      (()
-       args))))
-
-(define-syntax substitute-keyword-arguments
-  (syntax-rules ()
-    "Return a new list of arguments where the value for keyword arg KW is
-replaced by EXP.  EXP is evaluated in a context where VAR is boud to the
-previous value of the keyword argument."
-    ((_ original-args ((kw var) exp) ...)
-     (let loop ((args    original-args)
-                (before '()))
-       (match args
-         ((kw var rest (... ...))
-          (loop rest (cons* exp kw before)))
-         ...
-         ((x rest (... ...))
-          (loop rest (cons x before)))
-         (()
-          (reverse before)))))))
-
 (define gnu-make-boot0
   (package-with-bootstrap-guile
    (package (inherit gnu-make)
diff --git a/guix/utils.scm b/guix/utils.scm
index 7ebc026702..fa5abadc7a 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -49,6 +49,8 @@
             define-record-type*
             compile-time-value
             memoize
+            default-keyword-arguments
+            substitute-keyword-arguments
 
             location
             location?
@@ -546,6 +548,37 @@ FIELD/DEFAULT-VALUE tuples."
               (hash-set! cache args results)
               (apply values results)))))))
 
+(define (default-keyword-arguments args defaults)
+  "Return ARGS augmented with any keyword/value from DEFAULTS for
+keywords not already present in ARGS."
+  (let loop ((defaults defaults)
+             (args     args))
+    (match defaults
+      ((kw value rest ...)
+       (loop rest
+             (if (assoc-ref kw args)
+                 args
+                 (cons* kw value args))))
+      (()
+       args))))
+
+(define-syntax substitute-keyword-arguments
+  (syntax-rules ()
+    "Return a new list of arguments where the value for keyword arg KW is
+replaced by EXP.  EXP is evaluated in a context where VAR is boud to the
+previous value of the keyword argument."
+    ((_ original-args ((kw var) exp) ...)
+     (let loop ((args    original-args)
+                (before '()))
+       (match args
+         ((kw var rest (... ...))
+          (loop rest (cons* exp kw before)))
+         ...
+         ((x rest (... ...))
+          (loop rest (cons x before)))
+         (()
+          (reverse before)))))))
+
 (define (gnu-triplet->nix-system triplet)
   "Return the Nix system type corresponding to TRIPLET, a GNU triplet as
 returned by `config.guess'."