guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: services: configuration: Add maybe-value exported procedure.


From: guix-commits
Subject: 02/02: services: configuration: Add maybe-value exported procedure.
Date: Wed, 24 Aug 2022 23:28:47 -0400 (EDT)

apteryx pushed a commit to branch master
in repository guix.

commit cc32cd41f74c642583837b43444646d52b3fd5da
Author: Attila Lendvai <attila@lendvai.name>
AuthorDate: Wed Aug 24 14:40:40 2022 +0200

    services: configuration: Add maybe-value exported procedure.
    
    * gnu/services/configuration.scm (maybe-value): New procedure.
    
    Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
---
 gnu/services/configuration.scm | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm
index a9426066b9..60965486a7 100644
--- a/gnu/services/configuration.scm
+++ b/gnu/services/configuration.scm
@@ -58,6 +58,7 @@
             define-maybe
             define-maybe/no-serialization
             %unset-value
+            maybe-value
             maybe-value-set?
             generate-documentation
             configuration->documentation
@@ -315,6 +316,15 @@ does not have a default value" field kind)))
   "Predicate to check whether a 'maybe' value was explicitly provided."
   (not (eq? %unset-value value)))
 
+;; Ideally there should be a compiler macro for this predicate, that expands
+;; to a conditional that only instantiates the default value when needed.
+(define* (maybe-value value #:optional (default #f))
+  "Returns VALUE, unless it is the unset value, in which case it returns
+DEFAULT."
+  (if (maybe-value-set? value)
+      value
+      default))
+
 ;; A little helper to make it easier to document all those fields.
 (define (generate-documentation documentation documentation-name)
   (define (str x) (object->string x))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]