services: configuration: Add maybe-value exported procedure.

* gnu/services/configuration.scm (maybe-value): New procedure.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This commit is contained in:
Attila Lendvai 2022-08-24 14:40:40 +02:00 committed by Maxim Cournoyer
parent 147f8f19f8
commit cc32cd41f7
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -58,6 +58,7 @@ (define-module (gnu services configuration)
define-maybe
define-maybe/no-serialization
%unset-value
maybe-value
maybe-value-set?
generate-documentation
configuration->documentation
@ -315,6 +316,15 @@ (define (maybe-value-set? value)
"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))