You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let inlinemap2(f:'T->'U->'V)(ResultT x:ResultT<'``Monad<Result<'T,'E>>``>)(ResultT y:ResultT<'``Monad<Result<'U,'E>>``>):ResultT<'``Monad<Result<'V,'E>>``>= ResultT (lift2 (Result.map2 f) x y)
57
+
let inlinemap3(f:'T->'U->'V->'W)(ResultT x:ResultT<'``Monad<Result<'T,'E>>``>)(ResultT y:ResultT<'``Monad<Result<'U,'E>>``>)(ResultT z:ResultT<'``Monad<Result<'V,'E>>``>):ResultT<'``Monad<Result<'W,'E>>``>= ResultT (lift3 (Result.map3 f) x y z)
57
58
58
59
typeResultT<'``monad<'result<'t,'e>>``>with
59
60
@@ -65,6 +66,9 @@ type ResultT<'``monad<'result<'t,'e>>``> with
65
66
[<EditorBrowsable(EditorBrowsableState.Never)>]
66
67
static member inlineLift2(f:'T->'U->'V,x:ResultT<'``Monad<Result<'T,'E>``>,y:ResultT<'``Monad<Result<'U,'E>``>):ResultT<'``Monad<Result<'V,'E>``>= ResultT.map2 f x y
67
68
69
+
[<EditorBrowsable(EditorBrowsableState.Never)>]
70
+
static member inlineLift3(f:'T->'U->'V->'W,x:ResultT<'``Monad<Result<'T,'E>``>,y:ResultT<'``Monad<Result<'U,'E>``>,z:ResultT<'``Monad<Result<'V,'E>``>):ResultT<'``Monad<Result<'W,'E>``>= ResultT.map3 f x y z
71
+
68
72
static member inline(<*>)(f:ResultT<'``Monad<'Result<('T -> 'U),'E>>``>,x:ResultT<'``Monad<'Result<'T,'E>>``>)= ResultT.apply f x : ResultT<'``Monad<'Result<'U,'E>>``>
69
73
static member inline(>>=)(x: ResultT<'``Monad<'Result<'T,'E>>``>, f: 'T->ResultT<'``Monad<'Result<'U,'E>>``>)= ResultT.bind f x
Copy file name to clipboardExpand all lines: src/FSharpPlus/Data/Free.fs
+13Lines changed: 13 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -61,6 +61,13 @@ module Free =
61
61
| Roll (x:^``Functor<Free<'Functor<'T>,'T>>``)-> Roll (Map.Invoke (loop y: Free<'``Functor<'T>``,'T>->_) x: '``Functor<Free<'Functor<'V>,'V>>``)
62
62
loop y x
63
63
64
+
let inlinemap3(f:'T->'U->'V->'W)(x:Free<'``Functor<'T>``,'T>)(y:Free<'``Functor<'U>``,'U>)(z:Free<'``Functor<'V>``,'V>):Free<'``Functor<'W>``,'W>=
65
+
let recloop(y:Free<_,_>)(x:Free<_,_>)(z:Free<_,_>)=
66
+
match run x with
67
+
| Pure x -> map2<'U,'V,'W,'``Functor<'U>``,'``Functor<Free<'Functor<'U>,'U>>``,'``Functor<Free<'Functor<'V>,'V>>``,'``Functor<Free<'Functor<'W>,'W>>``,'``Functor<'V>``,'``Functor<'W>``>(f x) y z : Free<'``Functor<'W>``,'W>
68
+
| Roll (x:^``Functor<Free<'Functor<'T>,'T>>``)-> Roll (Map.Invoke (loop y: Free<'``Functor<'T>``,'T>->_) x: '``Functor<Free<'Functor<'W>,'W>>``)
69
+
loop y x z
70
+
64
71
/// Folds the Free structure into a Monad
65
72
let inlinefold(f:'``Functor<'T>`` ->'``Monad<'T>``)(x:Free<'``Functor<'U>``,'U>):'``Monad<'U>`` =
66
73
let recloop f x =
@@ -89,7 +96,13 @@ type Free<'``functor<'t>``,'t> with
89
96
static memberReturn x = Pure x
90
97
static member inline(>>=)(x: Free<'``Functor<'T>``,'T>, f: 'T -> Free<'``Functor<'U>``,'U>)= Free.bind f x : Free<'``Functor<'U>``,'U>
91
98
static member inline(<*>)(f:Free<'``Functor<'T->'U>``,'T->'U>,x:Free<'``Functor<'T>``,'T>)= Free.apply f x : Free<'``Functor<'U>``,'U>
99
+
100
+
[<EditorBrowsable(EditorBrowsableState.Never)>]
92
101
static member inlineLift2(f,x:Free<'``Functor<'T>``,'T>,y:Free<'``Functor<'U>``,'U>)= Free.map2 f x y: Free<'``Functor<'V>``,'V>
102
+
103
+
[<EditorBrowsable(EditorBrowsableState.Never)>]
104
+
static member inlineLift3(f,x:Free<'``Functor<'T>``,'T>,y:Free<'``Functor<'U>``,'U>,z:Free<'``Functor<'V>``,'V>)= Free.map3 f x y z: Free<'``Functor<'W>``,'W>
105
+
93
106
static memberDelay(x:unit ->Free<'``Functor<'T>``,'T>)= x ()
let inlineapply(ListT f:ListT<'``Monad<list<('T -> 'U)>``>)(ListT x:ListT<'``Monad<list<'T>``>)= ListT (map List.apply f <*> x): ListT<'``Monad<list<'U>``>
59
-
let inlinelift2(f:'T->'U->'V)(ListT x:ListT<'``Monad<list<'T>``>)(ListT y:ListT<'``Monad<list<'U>``>)= ListT (lift2 (List.lift2 f) x y): ListT<'``Monad<list<'V>``>
59
+
let inlinelift2(f:'T->'U->'V)(ListT x:ListT<'``Monad<list<'T>``>)(ListT y:ListT<'``Monad<list<'U>``>)= ListT (lift2 (List.lift2 f) x y): ListT<'``Monad<list<'V>``>
60
+
let inlinelift3(f:'T->'U->'V->'W)(ListT x:ListT<'``Monad<list<'T>``>)(ListT y:ListT<'``Monad<list<'U>``>)(ListT z:ListT<'``Monad<list<'V>``>)= ListT (lift3 (List.lift3 f) x y z): ListT<'``Monad<list<'W>``>
60
61
let inlinemap(f:'T->'U)(ListT m:ListT<'``Monad<list<'T>``>)= ListT (map (List.map f) m): ListT<'``Monad<list<'U>``>
61
62
62
63
typeListT<'``monad<list<'t>>``>with
@@ -69,6 +70,9 @@ type ListT<'``monad<list<'t>>``> with
69
70
[<EditorBrowsable(EditorBrowsableState.Never)>]
70
71
static member inlineLift2(f:'T->'U->'V,x:ListT<'``Monad<list<'T>``>,y:ListT<'``Monad<list<'U>``>)= ListT.lift2 f x y : ListT<'``Monad<list<'V>``>
71
72
73
+
[<EditorBrowsable(EditorBrowsableState.Never)>]
74
+
static member inlineLift3(f:'T->'U->'V->'W,x:ListT<'``Monad<list<'T>``>,y:ListT<'``Monad<list<'U>``>,z:ListT<'``Monad<list<'V>``>)= ListT.lift3 f x y z : ListT<'``Monad<list<'W>``>
75
+
72
76
static member inline(<*>)(f:ListT<'``Monad<list<('T -> 'U)>``>,x:ListT<'``Monad<list<'T>``>)= ListT.apply f x : ListT<'``Monad<list<'U>``>
73
77
static member inline(>>=)(x: ListT<'``Monad<list<'T>``>, f: 'T -> ListT<'``Monad<list<'U>``>)= ListT.bind f x
Copy file name to clipboardExpand all lines: src/FSharpPlus/Data/Option.fs
+4Lines changed: 4 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -34,6 +34,7 @@ module OptionT =
34
34
let inlineapply(OptionT f:OptionT<'``Monad<option<('T -> 'U)>``>)(OptionT x:OptionT<'``Monad<option<'T>``>)= OptionT (map Option.apply f <*> x): OptionT<'``Monad<option<'U>``>
35
35
let inlinemap(f:'T->'U)(OptionT m:OptionT<'``Monad<option<'T>``>)= OptionT (map (Option.map f) m): OptionT<'``Monad<option<'U>``>
36
36
let inlinemap2(f:'T->'U->'V)(OptionT x:OptionT<'``Monad<option<'T>>``>)(OptionT y:OptionT<'``Monad<option<'U>>``>)= OptionT (lift2 (Option.map2 f) x y): OptionT<'``Monad<option<'V>>``>
37
+
let inlinemap3(f:'T->'U->'V->'W)(OptionT x:OptionT<'``Monad<option<'T>>``>)(OptionT y:OptionT<'``Monad<option<'U>>``>)(OptionT z:OptionT<'``Monad<option<'V>>``>)= OptionT (lift3 (Option.map3 f) x y z): OptionT<'``Monad<option<'W>>``>
37
38
38
39
typeOptionT<'``monad<option<'t>>``>with
39
40
@@ -45,6 +46,9 @@ type OptionT<'``monad<option<'t>>``> with
45
46
[<EditorBrowsable(EditorBrowsableState.Never)>]
46
47
static member inlineLift2(f:'T->'U->'V,x:OptionT<'``Monad<option<'T>``>,y:OptionT<'``Monad<option<'U>``>)= OptionT.map2 f x y : OptionT<'``Monad<option<'V>``>
47
48
49
+
[<EditorBrowsable(EditorBrowsableState.Never)>]
50
+
static member inlineLift3(f:'T->'U->'V->'W,x:OptionT<'``Monad<option<'T>``>,y:OptionT<'``Monad<option<'U>``>,z:OptionT<'``Monad<option<'W>``>)= OptionT.map3 f x y z : OptionT<'``Monad<option<'W>``>
51
+
48
52
static member inline(<*>)(f:OptionT<'``Monad<option<('T -> 'U)>``>,x:OptionT<'``Monad<option<'T>``>)= OptionT.apply f x : OptionT<'``Monad<option<'U>``>
49
53
static member inline(>>=)(x: OptionT<'``Monad<option<'T>``>, f: 'T -> OptionT<'``Monad<option<'U>``>)= OptionT.bind f x
/// Combines two ReaderTs into one by applying a mapping function.
83
92
let inlinemap2(f:'T->'U->'V)(ReaderT x:ReaderT<'R,'``Monad<'T>``>)(ReaderT y:ReaderT<'R,'``Monad<'U>``>)= ReaderT (fun a -> lift2 f (x a)(y a)): ReaderT<'R,'``Monad<'V>``>
84
93
94
+
/// Combines three ReaderTs into one by applying a mapping function.
95
+
let inlinemap3(f:'T->'U->'V->'W)(ReaderT x:ReaderT<'R,'``Monad<'T>``>)(ReaderT y:ReaderT<'R,'``Monad<'U>``>)(ReaderT z:ReaderT<'R,'``Monad<'V>``>)= ReaderT (fun a -> lift3 f (x a)(y a)(z a)): ReaderT<'R,'``Monad<'W>``>
96
+
85
97
let inlineapply(ReaderT (f:_ ->'``Monad<'T->'U>``))(ReaderT (x:_->'``Monad<'T>``))= ReaderT (fun r -> f r <*> x r): ReaderT<'R, '``Monad<'U>``>
86
98
87
99
/// Zips two ReaderTs into one.
@@ -100,7 +112,10 @@ type ReaderT<'r,'``monad<'t>``> with
100
112
static member inlineMap(x:ReaderT<'R, '``Monad<'T>``>,f:'T->'U)= ReaderT.map f x : ReaderT<'R, '``Monad<'U>``>
101
113
102
114
[<EditorBrowsable(EditorBrowsableState.Never)>]
103
-
static member inlineLift2(f:'T->'U->'V,x:ReaderT<'S,'``Monad<'T>``>,y:ReaderT<'S,'``Monad<'U>``>):ReaderT<'S,'``Monad<'V>``>= ReaderT.map2 f x y
115
+
static member inlineLift2(f:'T->'U->'V,x:ReaderT<'R,'``Monad<'T>``>,y:ReaderT<'R,'``Monad<'U>``>):ReaderT<'R,'``Monad<'V>``>= ReaderT.map2 f x y
116
+
117
+
[<EditorBrowsable(EditorBrowsableState.Never)>]
118
+
static member inlineLift3(f:'T->'U->'V->'W,x:ReaderT<'R,'``Monad<'T>``>,y:ReaderT<'R,'``Monad<'U>``>,z:ReaderT<'R,'``Monad<'V>``>):ReaderT<'R,'``Monad<'W>``>= ReaderT.map3 f x y z
104
119
105
120
static member inline(<*>)(f:ReaderT<_,'``Monad<'T -> 'U>``>,x:ReaderT<_,'``Monad<'T>``>)= ReaderT.apply f x : ReaderT<'R, '``Monad<'U>``>
106
121
static member inline(>>=)(x: ReaderT<_,'``Monad<'T>``>, f: 'T->ReaderT<'R,'``Monad<'U>``>)= ReaderT.bind f x : ReaderT<'R, '``Monad<'U>``>
0 commit comments