@@ -49,6 +49,17 @@ module Validation =
49
49
| Success _ , Failure e2 -> Failure e2
50
50
| Success f , Success a -> Success ( f a)
51
51
52
+ let inline zip x y : Validation < 'Error , 'T * 'U > =
53
+ match ( x: Validation< 'Error, 'T>), ( y: Validation< 'Error, 'U>) with
54
+ #if ! FABLE_ COMPILER
55
+ | Failure e1, Failure e2 -> Failure ( plus e1 e2)
56
+ #else
57
+ | Failure e1, Failure e2 -> Failure ( e1 + e2)
58
+ #endif
59
+ | Failure e1, Success _ -> Failure e1
60
+ | Success _ , Failure e2 -> Failure e2
61
+ | Success x , Success y -> Success ( x, y)
62
+
52
63
let inline map2 f x y : Validation < 'Error , 'V > =
53
64
match ( x: Validation< 'Error, 'T>), ( y: Validation< 'Error, 'U>) with
54
65
#if ! FABLE_ COMPILER
@@ -281,6 +292,21 @@ type Validation<'error, 't> with
281
292
[<EditorBrowsable( EditorBrowsableState.Never) >]
282
293
static member inline Lift3 ( f , x : Validation < 'Error , 'T >, y : Validation < _ , 'U >, z : Validation < _ , 'V >) : Validation < _ , 'W > = Validation.map3 f x y z
283
294
295
+ // as ZipApplicative (same behavior)
296
+ [<EditorBrowsable( EditorBrowsableState.Never) >]
297
+ static member inline Zip ( x : Validation < 'Error , 'T >, y : Validation < 'Error , 'U >) : Validation < 'Error , 'T * 'U > = Validation.zip x y
298
+
299
+ [<EditorBrowsable( EditorBrowsableState.Never) >]
300
+ static member Pure x = Success x
301
+
302
+ static member inline (<.>) ( f : Validation < 'Error , 'T -> 'U >, x : Validation < _ , 'T >) : Validation < _ , _ > = Validation.apply f x
303
+
304
+ [<EditorBrowsable( EditorBrowsableState.Never) >]
305
+ static member inline Map2 ( f , x : Validation < 'Error , 'T >, y : Validation < 'Error , 'U >) : Validation < 'Error , 'V > = Validation.map2 f x y
306
+
307
+ [<EditorBrowsable( EditorBrowsableState.Never) >]
308
+ static member inline Map3 ( f , x : Validation < 'Error , 'T >, y : Validation < _ , 'U >, z : Validation < _ , 'V >) : Validation < _ , 'W > = Validation.map3 f x y z
309
+
284
310
// as Alternative (inherits from Applicative)
285
311
#if (! FABLE_ COMPILER || FABLE_ COMPILER_ 3) && ! FABLE_ COMPILER_ 4
286
312
static member inline get_Empty () = Failure ( getEmpty ())
0 commit comments