From e5a9c697c9628542a64ee1ab7e4d690ce961022d Mon Sep 17 00:00:00 2001 From: gusty <1261319+gusty@users.noreply.github.com> Date: Sat, 25 Nov 2023 20:33:22 +0100 Subject: [PATCH] Use value tuples --- src/FSharpPlus/Control/Applicative.fs | 51 +++++++++++++-------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/FSharpPlus/Control/Applicative.fs b/src/FSharpPlus/Control/Applicative.fs index 39eda1fe0..5646ebfa0 100644 --- a/src/FSharpPlus/Control/Applicative.fs +++ b/src/FSharpPlus/Control/Applicative.fs @@ -16,41 +16,41 @@ type Apply = #if (!FABLE_COMPILER || FABLE_COMPILER_3) && !FABLE_COMPILER_4 - static member ``<*>`` ((f: Lazy<'T->'U> , x: Lazy<'T> ) , _output: Lazy<'U> , []_mthd: Apply) = Lazy.apply f x : Lazy<'U> - static member ``<*>`` ((f: seq<_> , x: seq<'T> ) , _output: seq<'U> , []_mthd: Apply) = Seq.apply f x : seq<'U> - static member ``<*>`` ((f: NonEmptySeq<_> , x: NonEmptySeq<'T> ) , _output: NonEmptySeq<'U> , []_mthd: Apply) = NonEmptySeq.apply f x : NonEmptySeq<'U> - static member ``<*>`` ((f: IEnumerator<_> , x: IEnumerator<'T> ) , _output: IEnumerator<'U> , []_mthd: Apply) = Enumerator.map2 id f x : IEnumerator<'U> - static member ``<*>`` ((f: list<_> , x: list<'T> ) , _output: list<'U> , []_mthd: Apply) = List.apply f x : list<'U> - static member ``<*>`` ((f: _ [] , x: 'T [] ) , _output: 'U [] , []_mthd: Apply) = Array.apply f x : 'U [] - static member ``<*>`` ((f: 'r -> _ , g: _ -> 'T ) , _output: 'r -> 'U , []_mthd: Apply) = fun x -> let f' = f x in f' (g x) : 'U - static member inline ``<*>`` (((a: 'Monoid, f) , (b: 'Monoid, x: 'T) ) , _output: 'Monoid * 'U , []_mthd: Apply) = (Plus.Invoke a b, f x) : 'Monoid *'U - static member inline ``<*>`` ((struct (a: 'Monoid, f), struct (b: 'Monoid, x: 'T)), _output: struct ('Monoid * 'U), []_mthd: Apply) = struct (Plus.Invoke a b, f x) : struct ('Monoid * 'U) + static member ``<*>`` (struct (f: Lazy<'T->'U> , x: Lazy<'T> ) , _output: Lazy<'U> , []_mthd: Apply) = Lazy.apply f x : Lazy<'U> + static member ``<*>`` (struct (f: seq<_> , x: seq<'T> ) , _output: seq<'U> , []_mthd: Apply) = Seq.apply f x : seq<'U> + static member ``<*>`` (struct (f: NonEmptySeq<_> , x: NonEmptySeq<'T> ) , _output: NonEmptySeq<'U> , []_mthd: Apply) = NonEmptySeq.apply f x : NonEmptySeq<'U> + static member ``<*>`` (struct (f: IEnumerator<_> , x: IEnumerator<'T> ) , _output: IEnumerator<'U> , []_mthd: Apply) = Enumerator.map2 id f x : IEnumerator<'U> + static member ``<*>`` (struct (f: list<_> , x: list<'T> ) , _output: list<'U> , []_mthd: Apply) = List.apply f x : list<'U> + static member ``<*>`` (struct (f: _ [] , x: 'T [] ) , _output: 'U [] , []_mthd: Apply) = Array.apply f x : 'U [] + static member ``<*>`` (struct (f: 'r -> _ , g: _ -> 'T ) , _output: 'r -> 'U , []_mthd: Apply) = fun x -> let f' = f x in f' (g x) : 'U + static member inline ``<*>`` (struct ((a: 'Monoid, f) , (b: 'Monoid, x: 'T) ) , _output: 'Monoid * 'U , []_mthd: Apply) = (Plus.Invoke a b, f x) : 'Monoid *'U + static member inline ``<*>`` (struct (struct (a: 'Monoid, f), struct (b: 'Monoid, x: 'T)), _output: struct ('Monoid * 'U), []_mthd: Apply) = struct (Plus.Invoke a b, f x) : struct ('Monoid * 'U) #if !FABLE_COMPILER - static member ``<*>`` ((f: Task<_> , x: Task<'T> ), _output: Task<'U> , []_mthd: Apply) = Task.apply f x : Task<'U> + static member ``<*>`` (struct (f: Task<_> , x: Task<'T> ), _output: Task<'U> , []_mthd: Apply) = Task.apply f x : Task<'U> #endif #if !NET45 && !NETSTANDARD2_0 && !FABLE_COMPILER - static member ``<*>`` ((f: ValueTask<_> , x: ValueTask<'T> ), _output: ValueTask<'U> , []_mthd: Default3) = ValueTask.apply f x : ValueTask<'U> + static member ``<*>`` (struct (f: ValueTask<_> , x: ValueTask<'T> ), _output: ValueTask<'U> , []_mthd: Default3) = ValueTask.apply f x : ValueTask<'U> #endif - static member ``<*>`` ((f: Async<_> , x: Async<'T> ), _output: Async<'U> , []_mthd: Apply) = Async.apply f x : Async<'U> - static member ``<*>`` ((f: option<_> , x: option<'T> ), _output: option<'U> , []_mthd: Apply) = Option.apply f x : option<'U> - static member ``<*>`` ((f: voption<_> , x: voption<'T> ), _output: voption<'U> , []_mthd: Apply) = ValueOption.apply f x : voption<'U> - static member ``<*>`` ((f: Result<_,'E> , x: Result<'T,'E> ), _output: Result<'b,'E> , []_mthd: Apply) = Result.apply f x : Result<'U,'E> - static member ``<*>`` ((f: Choice<_,'E> , x: Choice<'T,'E> ), _output: Choice<'b,'E> , []_mthd: Apply) = Choice.apply f x : Choice<'U,'E> - static member inline ``<*>`` ((KeyValue(a: 'Key, f), KeyValue(b: 'Key, x: 'T)), _output: KeyValuePair<'Key,'U>, []_mthd: Default3) : KeyValuePair<'Key,'U> = KeyValuePair (Plus.Invoke a b, f x) - static member inline ``<*>`` ((f: KeyValuePair2<'Key, _>, x: KeyValuePair2<'Key, 'T>), _output: KeyValuePair2<'Key,'U>, []_mthd: Default3) : KeyValuePair2<'Key,'U> = + static member ``<*>`` (struct (f: Async<_> , x: Async<'T> ), _output: Async<'U> , []_mthd: Apply) = Async.apply f x : Async<'U> + static member ``<*>`` (struct (f: option<_> , x: option<'T> ), _output: option<'U> , []_mthd: Apply) = Option.apply f x : option<'U> + static member ``<*>`` (struct (f: voption<_> , x: voption<'T> ), _output: voption<'U> , []_mthd: Apply) = ValueOption.apply f x : voption<'U> + static member ``<*>`` (struct (f: Result<_,'E> , x: Result<'T,'E> ), _output: Result<'b,'E> , []_mthd: Apply) = Result.apply f x : Result<'U,'E> + static member ``<*>`` (struct (f: Choice<_,'E> , x: Choice<'T,'E> ), _output: Choice<'b,'E> , []_mthd: Apply) = Choice.apply f x : Choice<'U,'E> + static member inline ``<*>`` (struct (KeyValue(a: 'Key, f), KeyValue(b: 'Key, x: 'T)), _output: KeyValuePair<'Key,'U>, []_mthd: Default3) : KeyValuePair<'Key,'U> = KeyValuePair (Plus.Invoke a b, f x) + static member inline ``<*>`` (struct (f: KeyValuePair2<'Key, _>, x: KeyValuePair2<'Key, 'T>), _output: KeyValuePair2<'Key,'U>, []_mthd: Default3) : KeyValuePair2<'Key,'U> = let a = f.Key let b = x.Key let f = f.Value let x = x.Value KeyValuePair2 (Plus.Invoke a b, f x) - static member ``<*>`` ((f: Map<'Key,_> , x: Map<'Key,'T> ) , _output: Map<'Key,'U> , []_mthd: Apply) : Map<'Key,'U> = Map (seq { + static member ``<*>`` (struct (f: Map<'Key,_> , x: Map<'Key,'T> ) , _output: Map<'Key,'U> , []_mthd: Apply) : Map<'Key,'U> = Map (seq { for KeyValue(k, vf) in f do match Map.tryFind k x with | Some vx -> yield k, vf vx | _ -> () }) - static member ``<*>`` ((f: Dictionary<'Key,_>, x: Dictionary<'Key,'T>) , _output: Dictionary<'Key,'U> , []_mthd: Apply) : Dictionary<'Key,'U> = + static member ``<*>`` (struct (f: Dictionary<'Key,_>, x: Dictionary<'Key,'T>) , _output: Dictionary<'Key,'U> , []_mthd: Apply) : Dictionary<'Key,'U> = let dct = Dictionary () for KeyValue(k, vf) in f do match x.TryGetValue k with @@ -58,7 +58,7 @@ type Apply = | _ -> () dct - static member ``<*>`` ((f: IDictionary<'Key,_>, x: IDictionary<'Key,'T>) , _output: IDictionary<'Key,'U> , []_mthd: Apply) : IDictionary<'Key,'U> = + static member ``<*>`` (struct (f: IDictionary<'Key,_>, x: IDictionary<'Key,'T>) , _output: IDictionary<'Key,'U> , []_mthd: Apply) : IDictionary<'Key,'U> = let dct = Dictionary () for KeyValue(k, vf) in f do match x.TryGetValue k with @@ -66,7 +66,7 @@ type Apply = | _ -> () dct :> IDictionary<'Key,'U> - static member ``<*>`` ((f: IReadOnlyDictionary<'Key,_>, x: IReadOnlyDictionary<'Key,'T>) , _output: IReadOnlyDictionary<'Key,'U> , []_mthd: Apply) : IReadOnlyDictionary<'Key,'U> = + static member ``<*>`` (struct (f: IReadOnlyDictionary<'Key,_>, x: IReadOnlyDictionary<'Key,'T>) , _output: IReadOnlyDictionary<'Key,'U> , []_mthd: Apply) : IReadOnlyDictionary<'Key,'U> = let dct = Dictionary () for KeyValue(k, vf) in f do match x.TryGetValue k with @@ -75,16 +75,15 @@ type Apply = dct :> IReadOnlyDictionary<'Key,'U> #if !FABLE_COMPILER - static member ``<*>`` ((f: Expr<'T->'U>, x: Expr<'T>), _output: Expr<'U>, []_mthd: Apply) = Expr.Cast<'U> (Expr.Application (f, x)) + static member ``<*>`` (struct (f: Expr<'T->'U>, x: Expr<'T>), _output: Expr<'U>, []_mthd: Apply) = Expr.Cast<'U> (Expr.Application (f, x)) #endif - static member ``<*>`` ((f: ('T->'U) ResizeArray, x: 'T ResizeArray), _output: 'U ResizeArray, []_mthd: Apply) = ResizeArray.apply f x : 'U ResizeArray + static member ``<*>`` (struct (f: ('T->'U) ResizeArray, x: 'T ResizeArray), _output: 'U ResizeArray, []_mthd: Apply) = ResizeArray.apply f x : 'U ResizeArray static member inline Invoke (f: '``Applicative<'T -> 'U>``) (x: '``Applicative<'T>``) : '``Applicative<'U>`` = let inline call (mthd : ^M, input1: ^I1, input2: ^I2, output: ^R) = - ((^M or ^I1 or ^I2 or ^R) : (static member ``<*>`` : (_*_)*_*_ -> _) (input1, input2), output, mthd) + ((^M or ^I1 or ^I2 or ^R) : (static member ``<*>`` : struct (_*_) * _ * _ -> _) (struct (input1, input2)), output, mthd) call(Unchecked.defaultof, f, x, Unchecked.defaultof<'``Applicative<'U>``>) - #endif static member inline InvokeOnInstance (f: '``Applicative<'T->'U>``) (x: '``Applicative<'T>``) : '``Applicative<'U>`` =