mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
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:
parent
147f8f19f8
commit
cc32cd41f7
1 changed files with 10 additions and 0 deletions
|
@ -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))
|
||||
|
|
Loading…
Reference in a new issue