-
This commit is contained in:
parent
11c40a8dcf
commit
9cb4ed1ffc
|
@ -1,5 +1,5 @@
|
||||||
{ lib, ... }:
|
{ foldr }:
|
||||||
rec {
|
let
|
||||||
/*
|
/*
|
||||||
`fix f` computes the fixed point of the given function `f`. In other words, the return value is `x` in `x = f x`.
|
`fix f` computes the fixed point of the given function `f`. In other words, the return value is `x` in `x = f x`.
|
||||||
|
|
||||||
|
@ -274,7 +274,16 @@ rec {
|
||||||
```
|
```
|
||||||
*/
|
*/
|
||||||
composeManyExtensions =
|
composeManyExtensions =
|
||||||
lib.foldr (x: y: composeExtensions x y) (final: prev: {});
|
foldr (x: y: composeExtensions x y) (final: prev: {});
|
||||||
|
|
||||||
|
/*
|
||||||
|
Same as `makeExtensible` but the name of the extending attribute is
|
||||||
|
customized.
|
||||||
|
*/
|
||||||
|
makeExtensibleWithCustomName = extenderName: rattrs:
|
||||||
|
fix' (self: (rattrs self) // {
|
||||||
|
${extenderName} = f: makeExtensibleWithCustomName extenderName (extends f rattrs);
|
||||||
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Create an overridable, recursive attribute set. For example:
|
Create an overridable, recursive attribute set. For example:
|
||||||
|
@ -297,13 +306,14 @@ rec {
|
||||||
```
|
```
|
||||||
*/
|
*/
|
||||||
makeExtensible = makeExtensibleWithCustomName "extend";
|
makeExtensible = makeExtensibleWithCustomName "extend";
|
||||||
|
in
|
||||||
/*
|
{
|
||||||
Same as `makeExtensible` but the name of the extending attribute is
|
fix = fix;
|
||||||
customized.
|
fix' = fix';
|
||||||
*/
|
converge = converge;
|
||||||
makeExtensibleWithCustomName = extenderName: rattrs:
|
extends = extends;
|
||||||
fix' (self: (rattrs self) // {
|
composeExtensions = composeExtensions;
|
||||||
${extenderName} = f: makeExtensibleWithCustomName extenderName (extends f rattrs);
|
composeManyExtensions = composeManyExtensions;
|
||||||
});
|
makeExtensibleWithCustomName = makeExtensibleWithCustomName;
|
||||||
}
|
makeExtensible = makeExtensible;
|
||||||
|
}
|
Loading…
Reference in a new issue