@@ -2,19 +2,11 @@ module FSharp.Control.R3.Observable
2
2
3
3
open R3
4
4
5
- /// Applies an accumulator function over an observable sequence, returning the
6
- /// result of the aggregation as a single element in the result sequence
7
- let inline aggregateAsync cancellationToken seed ( f : 'r -> 't -> 'r ) source =
8
- ObservableExtensions.AggregateAsync ( source, seed, f, cancellationToken)
9
-
10
- /// Determines whether all elements of an observable satisfy a predicate
11
- let inline allAsync cancellationToken ( f : 't -> bool ) source = ObservableExtensions.AllAsync ( source, f, cancellationToken)
12
-
13
5
/// Hides the identy of an observable sequence
14
6
let inline asObservable source : Observable < 'Source > = ObservableExtensions.AsObservable source
15
7
16
8
/// Binds an observable to generate a subsequent observable.
17
- let inline bind ( f : 'T -> Observable < 'TNext >) source = ObservableExtensions.SelectMany ( source, f)
9
+ let inline bind ( [<InlineIfLambda>] f : 'T -> Observable < 'TNext >) source = ObservableExtensions.SelectMany ( source, f)
18
10
19
11
/// Converts the elements of the sequence to the specified type
20
12
let inline cast < 'T , 'CastType > ( source ) = ObservableExtensions.Cast< 'T, 'CastType> ( source)
@@ -26,28 +18,23 @@ let inline concat source = ObservableExtensions.Concat source
26
18
/// Returns an observable sequence that only contains distinct elements
27
19
let inline distinct source = ObservableExtensions.Distinct source
28
20
29
- /// Determines whether an observable sequence contains a specified value
30
- /// which satisfies the given predicate
31
- let inline existsAsync source = ObservableExtensions.AnyAsync source
32
-
33
- /// Returns the first element of an observable sequence
34
- let inline firstAsync source = ObservableExtensions.FirstAsync source
35
-
36
21
/// Filters the observable elements of a sequence based on a predicate
37
- let inline filter ( f : 't -> bool ) source = ObservableExtensions.Where ( source, f)
22
+ let inline filter ( [<InlineIfLambda>] f : 't -> bool ) source = ObservableExtensions.Where ( source, f)
38
23
39
24
/// Maps the given observable with the given function
40
- let inline map ( f : 't -> 'r ) source = ObservableExtensions.Select ( source, f)
25
+ let inline map ( [<InlineIfLambda>] f : 't -> 'r ) source = ObservableExtensions.Select ( source, f)
41
26
42
27
/// Maps the given observable with the given function and the index of the element
43
- let inline mapi ( f : int -> 't -> 'r ) source = ObservableExtensions.Select ( source, ( fun i x -> f x i))
28
+ let inline mapi ( [<InlineIfLambda>] f : int -> 't -> 'r ) source = ObservableExtensions.Select ( source, ( fun i x -> f x i))
44
29
45
30
/// Bypasses a specified number of elements in an observable sequence and then returns the remaining elements.
46
31
let inline skip ( count : int ) ( source ) = ObservableExtensions.Skip ( source, count)
47
32
48
- /// Takes n elements (from the beginning of an observable sequence? )
33
+ /// Takes n elements (from the beginning of an observable sequence?)
49
34
let inline take ( count : int ) ( source ) = ObservableExtensions.Take ( source, count)
50
35
36
+ /// Filters the observable elements of a sequence based on a predicate
37
+ let inline where ( [<InlineIfLambda>] f : 't -> bool ) source = ObservableExtensions.Where ( source, f)
51
38
52
39
[<CompilationRepresentation( CompilationRepresentationFlags.ModuleSuffix) >]
53
40
module Builders =
@@ -56,59 +43,59 @@ module Builders =
56
43
/// A reactive query builder.
57
44
/// See http://mnajder.blogspot.com/2011/09/when-reactive-framework-meets-f-30.html
58
45
type RxQueryBuilder () =
59
- member __ .For ( s : Observable < _ >, body : _ -> Observable < _ >) = s.SelectMany ( body)
46
+ member _ .For ( s : Observable < _ >, body : _ -> Observable < _ >) = s.SelectMany ( body)
60
47
[<CustomOperation( " select" , AllowIntoPattern = true ) >]
61
- member __ .Select ( s : Observable < _ >, [<ProjectionParameter>] selector : _ -> _ ) = s.Select ( selector)
48
+ member _ .Select ( s : Observable < _ >, [<ProjectionParameter>] selector : _ -> _ ) = s.Select ( selector)
62
49
[<CustomOperation( " where" , MaintainsVariableSpace = true , AllowIntoPattern = true ) >]
63
- member __ .Where ( s : Observable < _ >, [<ProjectionParameter>] predicate : _ -> bool ) = s.Where ( predicate)
50
+ member _ .Where ( s : Observable < _ >, [<ProjectionParameter>] predicate : _ -> bool ) = s.Where ( predicate)
64
51
[<CustomOperation( " takeWhile" , MaintainsVariableSpace = true , AllowIntoPattern = true ) >]
65
- member __ .TakeWhile ( s : Observable < _ >, [<ProjectionParameter>] predicate : _ -> bool ) = s.TakeWhile ( predicate)
52
+ member _ .TakeWhile ( s : Observable < _ >, [<ProjectionParameter>] predicate : _ -> bool ) = s.TakeWhile ( predicate)
66
53
[<CustomOperation( " take" , MaintainsVariableSpace = true , AllowIntoPattern = true ) >]
67
- member __ .Take ( s : Observable < _ >, count : int ) = s.Take ( count)
54
+ member _ .Take ( s : Observable < _ >, count : int ) = s.Take ( count)
68
55
[<CustomOperation( " skipWhile" , MaintainsVariableSpace = true , AllowIntoPattern = true ) >]
69
- member __ .SkipWhile ( s : Observable < _ >, [<ProjectionParameter>] predicate : _ -> bool ) = s.SkipWhile ( predicate)
56
+ member _ .SkipWhile ( s : Observable < _ >, [<ProjectionParameter>] predicate : _ -> bool ) = s.SkipWhile ( predicate)
70
57
[<CustomOperation( " skip" , MaintainsVariableSpace = true , AllowIntoPattern = true ) >]
71
- member __ .Skip ( s : Observable < _ >, count : int ) = s.Skip ( count)
72
- member __ .Zero () = Observable.Empty ( TimeProvider.System)
73
- member __ .Yield ( value ) = Observable.Return ( value, TimeProvider.System)
58
+ member _ .Skip ( s : Observable < _ >, count : int ) = s.Skip ( count)
59
+ member _ .Zero () = Observable.Empty ( TimeProvider.System)
60
+ member _ .Yield ( value ) = Observable.Return ( value, TimeProvider.System)
74
61
[<CustomOperation( " count" ) >]
75
- member __ .Count ( s : Observable < _ >) = ObservableExtensions.CountAsync ( s)
62
+ member _ .Count ( s : Observable < _ >) = ObservableExtensions.CountAsync ( s)
76
63
[<CustomOperation( " all" ) >]
77
- member __ .All ( s : Observable < _ >, [<ProjectionParameter>] predicate : _ -> bool ) = s.AllAsync ( new Func<_, bool> ( predicate))
64
+ member _ .All ( s : Observable < _ >, [<ProjectionParameter>] predicate : _ -> bool ) = s.AllAsync ( new Func<_, bool> ( predicate))
78
65
[<CustomOperation( " contains" ) >]
79
- member __ .Contains ( s : Observable < _ >, key ) = s.ContainsAsync ( key)
66
+ member _ .Contains ( s : Observable < _ >, key ) = s.ContainsAsync ( key)
80
67
[<CustomOperation( " distinct" , MaintainsVariableSpace = true , AllowIntoPattern = true ) >]
81
- member __ .Distinct ( s : Observable < _ >) = s.Distinct ()
68
+ member _ .Distinct ( s : Observable < _ >) = s.Distinct ()
82
69
[<CustomOperation( " exactlyOne" ) >]
83
- member __ .ExactlyOne ( s : Observable < _ >) = s.SingleAsync ()
70
+ member _ .ExactlyOne ( s : Observable < _ >) = s.SingleAsync ()
84
71
[<CustomOperation( " exactlyOneOrDefault" ) >]
85
- member __ .ExactlyOneOrDefault ( s : Observable < _ >) = s.SingleOrDefaultAsync ()
72
+ member _ .ExactlyOneOrDefault ( s : Observable < _ >) = s.SingleOrDefaultAsync ()
86
73
[<CustomOperation( " find" ) >]
87
- member __ .Find ( s : Observable < _ >, [<ProjectionParameter>] predicate : _ -> bool ) = s.FirstAsync ( new Func<_, bool> ( predicate))
74
+ member _ .Find ( s : Observable < _ >, [<ProjectionParameter>] predicate : _ -> bool ) = s.FirstAsync ( new Func<_, bool> ( predicate))
88
75
[<CustomOperation( " head" ) >]
89
- member __ .Head ( s : Observable < _ >) = s.FirstAsync ()
76
+ member _ .Head ( s : Observable < _ >) = s.FirstAsync ()
90
77
[<CustomOperation( " headOrDefault" ) >]
91
- member __ .HeadOrDefault ( s : Observable < _ >) = s.FirstOrDefaultAsync ()
78
+ member _ .HeadOrDefault ( s : Observable < _ >) = s.FirstOrDefaultAsync ()
92
79
[<CustomOperation( " last" ) >]
93
- member __ .Last ( s : Observable < _ >) = s.LastAsync ()
80
+ member _ .Last ( s : Observable < _ >) = s.LastAsync ()
94
81
[<CustomOperation( " lastOrDefault" ) >]
95
- member __ .LastOrDefault ( s : Observable < _ >) = s.LastOrDefaultAsync ()
82
+ member _ .LastOrDefault ( s : Observable < _ >) = s.LastOrDefaultAsync ()
96
83
[<CustomOperation( " maxBy" ) >]
97
- member __ .MaxBy ( s : Observable < 'a >, [<ProjectionParameter>] valueSelector : 'a -> 'b ) = s.MaxByAsync ( new Func< 'a, 'b> ( valueSelector))
84
+ member _ .MaxBy ( s : Observable < 'a >, [<ProjectionParameter>] valueSelector : 'a -> 'b ) = s.MaxByAsync ( new Func< 'a, 'b> ( valueSelector))
98
85
[<CustomOperation( " minBy" ) >]
99
- member __ .MinBy ( s : Observable < 'a >, [<ProjectionParameter>] valueSelector : 'a -> 'b ) = s.MinByAsync ( new Func< 'a, 'b> ( valueSelector))
86
+ member _ .MinBy ( s : Observable < 'a >, [<ProjectionParameter>] valueSelector : 'a -> 'b ) = s.MinByAsync ( new Func< 'a, 'b> ( valueSelector))
100
87
101
88
[<CustomOperation( " sumBy" ) >]
102
- member inline __ .SumBy ( s : Observable < _ >, [<ProjectionParameter>] valueSelector : _ -> _ ) =
89
+ member inline _ .SumBy ( s : Observable < _ >, [<ProjectionParameter>] valueSelector : _ -> _ ) =
103
90
s
104
- .Select( valueSelector)
105
- .AggregateAsync ( Unchecked.defaultof<_>, new Func<_, _, _> ( fun a b -> a + b))
91
+ |> _ . Select( valueSelector)
92
+ |> _ . AggregateAsync( Unchecked.defaultof<_>, new Func<_, _, _> ( fun a b -> a + b))
106
93
107
94
[<CustomOperation( " zip" , IsLikeZip = true ) >]
108
- member __ .Zip ( s1 : Observable < _ >, s2 : Observable < _ >, [<ProjectionParameter>] resultSelector : _ -> _ ) =
95
+ member _ .Zip ( s1 : Observable < _ >, s2 : Observable < _ >, [<ProjectionParameter>] resultSelector : _ -> _ ) =
109
96
s1.Zip ( s2, new Func<_, _, _> ( resultSelector))
110
97
111
98
[<CustomOperation( " iter" ) >]
112
- member __ .Iter ( s : Observable < _ >, [<ProjectionParameter>] selector : _ -> _ ) = s.ForEachAsync ( selector)
99
+ member _ .Iter ( s : Observable < _ >, [<ProjectionParameter>] selector : _ -> _ ) = s.ForEachAsync ( selector)
113
100
114
101
let rxquery = RxQueryBuilder ()
0 commit comments