File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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}
Original file line number Diff line number Diff line change @@ -2,11 +2,9 @@ either: adapt: identity: compose:
22let
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 ;
1210in
Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ either: adapt: defaultPathError:
22let
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 ;
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
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 ;
5146in
5247{
5348 inherit
Original file line number Diff line number Diff line change 22let
33 defaultPathError = path : got : { inherit path got ; } ;
44
5- labelWith = f : lmap f ;
5+ labelWith = lmap ;
66 label = msg : lmap ( _ : msg ) ;
77
88 regionWith =
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
Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ either: adapt: identity: attr:
22let
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 )
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 } ;
3131in
3232{
Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff line change 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 =
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 ; } ;
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 ;
You can’t perform that action at this time.
0 commit comments