Skip to content

Commit 0a2ba67

Browse files
committed
simplifications
1 parent 7e9a9c3 commit 0a2ba67

7 files changed

Lines changed: 28 additions & 46 deletions

File tree

nix/adapt.nix

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
1-
lens: from: back: refine: {
2-
get =
3-
t:
1+
lens: from: back: refine:
2+
let
3+
run =
4+
t: op: finish:
45
let
56
s = from t;
6-
a = lens.get s.right;
7+
r = op s.right;
78
in
8-
if s ? right then if a ? right then refine a.right else a else s;
9-
10-
set =
11-
t: b:
12-
let
13-
s = from t;
14-
r = lens.set s.right b;
15-
in
16-
if s ? right then if r ? right then back t r.right else r else s;
9+
if s ? right then if r ? right then finish r.right else r else s;
10+
in
11+
{
12+
get = t: run t lens.get refine;
13+
set = t: b: run t (s: lens.set s b) (back t);
1714
}

nix/attr.nix

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@ either: adapt: identity: compose:
22
let
33
attr =
44
name:
5-
adapt identity (s: if s ? ${name} then either.right s.${name} else either.left s) (s: v: {
6-
right = s // {
7-
${name} = v;
8-
};
9-
}) either.right;
5+
adapt identity (s: if s ? ${name} then either.right s.${name} else either.left s) (
6+
s: v: either.right (s // { ${name} = v; })
7+
) either.right;
108

119
path = names: builtins.foldl' (outer: name: compose outer (attr name)) identity names;
1210
in

nix/core.nix

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ either: adapt: defaultPathError:
22
let
33
identity = {
44
get = either.right;
5-
set = _s: b: { right = b; };
5+
set = _: either.right;
66
};
77

88
compose = outer: inner: adapt inner outer.get outer.set either.right;
@@ -22,12 +22,7 @@ let
2222
errorFn = step.errorFn or defaultPathError;
2323
in
2424
{
25-
get =
26-
s:
27-
let
28-
r = innerLens.get s;
29-
in
30-
if r ? left then { left = errorFn path r.left; } else r;
25+
get = s: either.mapL (errorFn path) (innerLens.get s);
3126
set = innerLens.set;
3227
}
3328
else
@@ -44,10 +39,10 @@ let
4439
in
4540
result.lens;
4641

47-
parse = refine: lens: adapt lens (s: either.right s) (s: v: v) refine;
42+
parse = refine: lens: adapt lens either.right (_: v: v) refine;
4843

4944
focus =
50-
getF: setF: adapt identity (s: either.right (getF s)) (s: v: { right = setF s v; }) either.right;
45+
getF: setF: adapt identity (s: either.right (getF s)) (s: v: either.right (setF s v)) either.right;
5146
in
5247
{
5348
inherit

nix/errors.nix

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ lmap:
22
let
33
defaultPathError = path: got: { inherit path got; };
44

5-
labelWith = f: lmap f;
5+
labelWith = lmap;
66
label = msg: lmap (_: msg);
77

88
regionWith =
@@ -18,7 +18,7 @@ let
1818
inner = err;
1919
});
2020

21-
annotateWith = errorFn: path: lmap (got: errorFn path got);
21+
annotateWith = errorFn: path: lmap (errorFn path);
2222
annotate = annotateWith defaultPathError;
2323

2424
# ensure: validate pred on right value; left msg if fails; propagates inner left unchanged

nix/extras.nix

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ either: adapt: identity: attr:
22
let
33
index =
44
n:
5-
adapt identity (s: either.right s) (s: _v: { right = s; }) (
5+
adapt identity either.right (s: _: either.right s) (
66
l:
77
if builtins.isList l && builtins.length l > n && n >= 0 then
88
either.right (builtins.elemAt l n)
@@ -26,7 +26,7 @@ let
2626
else
2727
either.mapR (acc: acc // { ${name} = fieldResult.right; }) accEither
2828
) (either.right { }) (builtins.attrNames obj);
29-
set = _obj: newValues: { right = newValues; };
29+
set = _: either.right;
3030
};
3131
in
3232
{

nix/parsers.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ let
1313
bool = typeParser builtins.isBool;
1414
list = typeParser builtins.isList;
1515

16-
nonEmpty = adapt identity (s: either.right s) (_: ne: { right = [ ne.head ] ++ ne.tail; }) (
16+
nonEmpty = adapt identity either.right (_: ne: either.right ([ ne.head ] ++ ne.tail)) (
1717
l:
1818
if l == [ ] then
1919
either.left l

nix/sequence.nix

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,12 @@ let
2323

2424
sequence = lenses: {
2525
get = s: sequenceEither (map (lens: lens.get s) lenses);
26-
set = s: _: { right = s; };
26+
set = s: _: either.right s;
2727
};
2828

2929
collect = names: {
30-
get =
31-
s:
32-
let
33-
r = sequenceEither (map (k: (attr k).get s) names);
34-
in
35-
if r ? left then r else either.right (indexAttrs names r.right);
36-
set = s: _: { right = s; };
30+
get = s: either.mapR (indexAttrs names) (sequenceEither (map (k: (attr k).get s) names));
31+
set = s: _: either.right s;
3732
};
3833

3934
transform =
@@ -50,11 +45,8 @@ let
5045
{
5146
get =
5247
s:
53-
let
54-
r = sequenceEither (map (name: validateField name s) fieldNames);
55-
in
56-
if r ? left then r else either.right (indexAttrs fieldNames r.right);
57-
set = _: b: { right = b; };
48+
either.mapR (indexAttrs fieldNames) (sequenceEither (map (name: validateField name s) fieldNames));
49+
set = _: either.right;
5850
};
5951

6052
defaultTransformError = field: got: { inherit field got; };
@@ -90,7 +82,7 @@ let
9082
either.left (indexAttrs fieldNames results)
9183
else
9284
either.right (indexAttrs fieldNames (map (r: r.right) results));
93-
set = _: b: { right = b; };
85+
set = _: either.right;
9486
};
9587

9688
transformAll = transformAllWith defaultTransformError;

0 commit comments

Comments
 (0)