Marc Weber <[email protected]> writes:

> On Fri, Dec 19, 2008 at 02:09:06PM +0100, Ludovic Courtès wrote:
>> How would you achieve that?  In the example of Git, does that mean you
>> would pass to the Git expression both a `makeSubversion' function *and*
>> a "default" `subversion' derivation?
> You got it: That's what all the *AndFun stuff is about (initial idea by
> Michael Raskin). Simplified it looks like this and I feel its the best
> thing we have at the moment to solve these issues:
>
> let defaultArgs = { name= "x"; buildInputs = [ .. ]; meta = ..; }; in
>
> derivation = mkDerivationX (
>   defaultArgs // {
>     passthru = { fun = overrides : mkDerivationX (defaultArgs // overrides); 
> };
>   })

Well, have asMuchFun as you want, but that's no fun to me.

Really, I don't get the point.  I'm under the impression that the
machinery is very complex for little gain.

"Andres Loeh" <[email protected]>
writes:

> Yes, I agree that the default for subversion should be *with*
> perl bindings.

Yes, and we can surely do the same for similar cases where the potential
for duplication arises.

> Currently, we're mostly passing complete derivations (let's say,
> because I like types, of type DERIVATION) into the Nix
> expressions for individual packages. These have a fixed set of
> options hard-wired at the time they're passed. Instead of doing
> that, let's pass the actual function, of type
> (OPTIONS -> DERIVATION) plus a set of default options (of type
> OPTIONS). The individual package can then decide whether to just
> go with the default options (by applying the function to the
> options), or if to modify the options before applying.

Thanks for the explanation.

Again, it looks overly complex to me.  I'm pretty sure we can avoid
duplication in most cases by choosing reasonable defaults.  Do you have
use cases in mind where this approach is a must?

Thanks,
Ludo'.

_______________________________________________
nix-dev mailing list
[email protected]
https://mail.cs.uu.nl/mailman/listinfo/nix-dev

Reply via email to