Hello!

Chris Marusich <cmmarus...@gmail.com> skribis:

> Is the description of "compose" correct?  The manual claims that it
> "must return a value that is a valid parameter value for the service
> instance," but I do not think that is actually true.  Judging by the
> implementation of fold-services in (gnu services), it may return any
> single value as long as the extend procedure knows how to handle it.  In
> fact, it is the "extend" procedure which must return a valid parameter
> value for the service.

Yes, you’re right!  Good catch.

> If this is true, then I suggest we change the documentation as follows:
>
>      ‘compose’ (default: ‘#f’)
>           If this is ‘#f’, then the service type denotes services that
>           cannot be extended—i.e., services that do not receive “values”
>           from other services.
>
>           Otherwise, it must be a one-argument procedure.  The procedure
>           is called by ‘fold-services’ and is passed a list of values
>           collected from extensions.  It may return any single value.
>
>      ‘extend’ (default: ‘#f’)
>           If this is ‘#f’, services of this type cannot be extended.
>
>           Otherwise, it must be a two-argument procedure:
>           ‘fold-services’ calls it, passing it the initial value of the
>           service as the first argument and the result of applying
>           ‘compose’ to the extension values as the second argument.  It
>           must return a value that is a valid parameter value for the
>           service instance.
>
> What do you think?

LGTM!

Thank you,
Ludo’.

Reply via email to