mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-09-15 21:46:53 +00:00
Save notify-due-items user task
This commit is contained in:
@@ -1,9 +1,16 @@
|
||||
module Data.Validated exposing (Validated(..), value)
|
||||
module Data.Validated exposing
|
||||
( Validated(..)
|
||||
, map
|
||||
, map2
|
||||
, map3
|
||||
, map4
|
||||
, value
|
||||
)
|
||||
|
||||
|
||||
type Validated a
|
||||
= Valid a
|
||||
| Invalid a
|
||||
| Invalid (List String) a
|
||||
| Unknown a
|
||||
|
||||
|
||||
@@ -13,8 +20,81 @@ value va =
|
||||
Valid a ->
|
||||
a
|
||||
|
||||
Invalid a ->
|
||||
Invalid _ a ->
|
||||
a
|
||||
|
||||
Unknown a ->
|
||||
a
|
||||
|
||||
|
||||
map : (a -> b) -> Validated a -> Validated b
|
||||
map f va =
|
||||
case va of
|
||||
Valid a ->
|
||||
Valid (f a)
|
||||
|
||||
Invalid em a ->
|
||||
Invalid em (f a)
|
||||
|
||||
Unknown a ->
|
||||
Unknown (f a)
|
||||
|
||||
|
||||
map2 : (a -> b -> c) -> Validated a -> Validated b -> Validated c
|
||||
map2 f va vb =
|
||||
case ( va, vb ) of
|
||||
( Valid a, Valid b ) ->
|
||||
Valid (f a b)
|
||||
|
||||
( Valid a, Invalid em b ) ->
|
||||
Invalid em (f a b)
|
||||
|
||||
( Valid a, Unknown b ) ->
|
||||
Unknown (f a b)
|
||||
|
||||
( Invalid em a, Valid b ) ->
|
||||
Invalid em (f a b)
|
||||
|
||||
( Invalid em1 a, Invalid em2 b ) ->
|
||||
Invalid (em1 ++ em2) (f a b)
|
||||
|
||||
( Invalid em a, Unknown b ) ->
|
||||
Invalid em (f a b)
|
||||
|
||||
( Unknown a, Valid b ) ->
|
||||
Unknown (f a b)
|
||||
|
||||
( Unknown a, Invalid em b ) ->
|
||||
Invalid em (f a b)
|
||||
|
||||
( Unknown a, Unknown b ) ->
|
||||
Unknown (f a b)
|
||||
|
||||
|
||||
map3 :
|
||||
(a -> b -> c -> d)
|
||||
-> Validated a
|
||||
-> Validated b
|
||||
-> Validated c
|
||||
-> Validated d
|
||||
map3 f va vb vc =
|
||||
let
|
||||
vab =
|
||||
map2 (\e1 -> \e2 -> f e1 e2) va vb
|
||||
in
|
||||
map2 (\g -> \e3 -> g e3) vab vc
|
||||
|
||||
|
||||
map4 :
|
||||
(a -> b -> c -> d -> e)
|
||||
-> Validated a
|
||||
-> Validated b
|
||||
-> Validated c
|
||||
-> Validated d
|
||||
-> Validated e
|
||||
map4 f va vb vc vd =
|
||||
let
|
||||
vabc =
|
||||
map3 (\e1 -> \e2 -> \e3 -> f e1 e2 e3) va vb vc
|
||||
in
|
||||
map2 (\g -> \e4 -> g e4) vabc vd
|
||||
|
Reference in New Issue
Block a user