F# wrappers for the Reactive Extensions (Rx)
The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)
Extensions and wrappers for using Reactive Extensions (Rx) with F#.
Home Page: http://fsprojects.github.io/FSharp.Control.Reactive
License: Other
F# wrappers for the Reactive Extensions (Rx)
The default maintainer account for projects under "fsprojects" is @fsprojectsgit - F# Community Project Incubation Space (repo management)
In a few cases, the functions in the Observable module end up taking System.Func parameters (rather than a corresponding F# function). I assume these are inadvertent, since in all other cases the Observable functions take F# functions as parameters (where appropriate). The cases I found are:
longCountSatisfy (predicate: Func<'a,bool>)
generateTimeSpan (condition: Func<'state,bool>) (iterate: Func<'state,'state>)
Also, the Observable.create function has type:
(IObserver<'T> -> Action) -> IObservable<'T>
It might be worth rewriting it to wrap the Action, for example:
let create : (IObserver<'T> -> (unit -> unit)) -> IObservable<'T> =
fun subscribe ->
Observable.Create(fun observer -> Action(subscribe observer))
I'm having trouble using the Observer.Create function:
type Observer with
/// Creates an observer from the specified onNext function.
static member Create(onNext) =
Observer.Create(Action<_> onNext)
I've tried both of these alternatives, but the code doesn't compile:
FSharp.Reactive.Observer.Create (fun _ -> ())
FSharp.Reactive.Core.Observer.Create (fun _ -> ())
However, this code does compile:
System.Reactive.Observer.Create (fun _ -> ())
To make matters clear, I'm using the FSharp.Reactive NuGet package, which is currently 10 months old, so it's possible that this function simply doesn't exist in that package. If this is the case, could we please get an updated NuGet package?
If something else is the matter, could you please point out my errors?
Thank you for a great library.
I'd like to suggest a new function, which would look like this:
let Subscribe observer (observable : IObservable<'T>) =
observable.Subscribe observer
The purpose is simply to enable a more idiomatic F# syntax for pipelining observables to an observer, like this:
c
|> Observable.map EnvelopWithDefaults
|> Subscribe reservationRequestObserver
|> request.RegisterForDispose
Perhaps there's already a way to do that, but I couldn't find it.
If you think this is an acceptable idea, I'll be happy to provide a pull request.
collectMerge, delayUnitl, equalsCompare* and throttleComputed would be better with the observable as the last parameter to allow pipelining or partial application.
The wrapper is currently only a single file and could just as easily be added via nuget as content rather than as an additional assembly. This should also depend upon the Rx nuget package.
---------------------------------------------------------------------
Build Time Report
---------------------------------------------------------------------
Target Duration
------ --------
Clean 00:00:00.0058689
CopyLicense 00:00:00.0038034
AssemblyInfo 00:00:00.0086533
Total: 00:00:04.3059654
Status: Failure
---------------------------------------------------------------------
1) Building l:\git\FSharp.Control.Reactive\FSharp.Control.Reactive.sln failed with exitcode 1.
2) FS0039: l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(8,16): The namespace 'Reactive' is not de
fined
3) FS0039: l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(167,21): The value or constructor 'TestSc
heduler' is not defined
4) FS0072: l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(174,5): Lookup on object of indeterminate
type based on information prior to this program point. A type annotation may be needed prior to this program
point to constrain the type of the object. This may allow the lookup to be resolved.
---------------------------------------------------------------------
The full log
No version specified. Downloading latest stable.
Paket.exe 0.11.12.0 is up to date.
Paket version 0.11.12.0
FAKE 3.5.11 already downloaded
FSharp.Compiler.Service 0.0.62 already downloaded
Microsoft.AspNet.Razor 2.0.30506.0 already downloaded
FSharp.Formatting 2.4.33 already downloaded
FSharp.Formatting 2.4.33 already copied
FSharp.Compiler.Service 0.0.62 already copied
Microsoft.AspNet.Razor 2.0.30506.0 already copied
FAKE 3.5.11 already copied
FAKE 3.5.11 already extracted
FSharp.Formatting 2.4.33 already extracted
Microsoft.AspNet.Razor 2.0.30506.0 already extracted
FSharp.Compiler.Service 0.0.62 already extracted
No libraries found in l:\git\FSharp.Control.Reactive\packages\FAKE
Libraries found in l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting:
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\CSharpFormat.dll
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\CSharpFormat.pdb
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.CodeFormat.dll
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.CodeFormat.pdb
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.CodeFormat.xml
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.Literate.dll
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.Literate.pdb
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.Literate.xml
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.Markdown.dll
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.Markdown.pdb
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.Markdown.xml
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.MetadataFormat.dll
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.MetadataFormat.pdb
- l:\git\FSharp.Control.Reactive\packages\FSharp.Formatting\lib\net40\FSharp.MetadataFormat.xml
Libraries found in l:\git\FSharp.Control.Reactive\packages\Microsoft.AspNet.Razor:
- l:\git\FSharp.Control.Reactive\packages\Microsoft.AspNet.Razor\lib\net40\System.Web.Razor.dll
- l:\git\FSharp.Control.Reactive\packages\Microsoft.AspNet.Razor\lib\net40\System.Web.Razor.xml
Libraries found in l:\git\FSharp.Control.Reactive\packages\FSharp.Compiler.Service:
- l:\git\FSharp.Control.Reactive\packages\FSharp.Compiler.Service\lib\net40\FSharp.Compiler.Service.dll
- l:\git\FSharp.Control.Reactive\packages\FSharp.Compiler.Service\lib\net40\FSharp.Compiler.Service.pdb
- l:\git\FSharp.Control.Reactive\packages\FSharp.Compiler.Service\lib\net40\FSharp.Compiler.Service.XML
- l:\git\FSharp.Control.Reactive\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.dll
- l:\git\FSharp.Control.Reactive\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.pdb
- l:\git\FSharp.Control.Reactive\packages\FSharp.Compiler.Service\lib\net45\FSharp.Compiler.Service.XML
NUnit 2.6.3 already downloaded
NUnit 2.6.3 already copied
NUnit 2.6.3 already extracted
Libraries found in l:\git\FSharp.Control.Reactive\packages\NUnit:
- l:\git\FSharp.Control.Reactive\packages\NUnit\lib\nunit.framework.dll
- l:\git\FSharp.Control.Reactive\packages\NUnit\lib\nunit.framework.xml
NUnit.Runners 2.6.3 already downloaded
NuGet.CommandLine 2.8.2 already downloaded
RazorEngine 3.3.0 already downloaded
NuGet.CommandLine 2.8.2 already copied
NUnit.Runners 2.6.3 already copied
RazorEngine 3.3.0 already copied
NUnit.Runners 2.6.3 already extracted
No libraries found in l:\git\FSharp.Control.Reactive\packages\NUnit.Runners
NuGet.CommandLine 2.8.2 already extracted
Rx-Core 2.2.5 already downloaded
No libraries found in l:\git\FSharp.Control.Reactive\packages\NuGet.CommandLine
RazorEngine 3.3.0 already extracted
Rx-Experimental 2.2.5 already downloaded
Rx-Interfaces 2.2.5 already downloaded
Libraries found in l:\git\FSharp.Control.Reactive\packages\RazorEngine:
- l:\git\FSharp.Control.Reactive\packages\RazorEngine\lib\net40\RazorEngine.dll
- l:\git\FSharp.Control.Reactive\packages\RazorEngine\lib\net40\RazorEngine.pdb
- l:\git\FSharp.Control.Reactive\packages\RazorEngine\lib\net40\RazorEngine.XML
Rx-Core 2.2.5 already copied
Rx-Interfaces 2.2.5 already copied
Rx-Linq 2.2.5 already downloaded
Rx-Interfaces 2.2.5 already extracted
Rx-Experimental 2.2.5 already copied
Rx-Core 2.2.5 already extracted
Rx-Linq 2.2.5 already copied
Rx-Experimental 2.2.5 already extracted
Rx-Linq 2.2.5 already extracted
Libraries found in l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces:
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\net40\System.Reactive.Interfaces.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\net40\System.Reactive.Interfaces.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\net45\System.Reactive.Interfaces.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\net45\System.Reactive.Interfaces.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\portable-net40+sl5+win8+wp8\System.Reactive.Interfaces.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\portable-net40+sl5+win8+wp8\System.Reactive.Interfaces.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Interfaces.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Interfaces.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\portable-win81+wpa81\System.Reactive.Interfaces.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\portable-win81+wpa81\System.Reactive.Interfaces.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\sl5\System.Reactive.Interfaces.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\sl5\System.Reactive.Interfaces.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\windows8\System.Reactive.Interfaces.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\windows8\System.Reactive.Interfaces.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\windowsphone71\System.Reactive.Interfaces.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\windowsphone71\System.Reactive.Interfaces.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\windowsphone8\System.Reactive.Interfaces.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\windowsphone8\System.Reactive.Interfaces.XML
Libraries found in l:\git\FSharp.Control.Reactive\packages\Rx-Core:
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\net40\System.Reactive.Core.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\net40\System.Reactive.Core.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\net45\System.Reactive.Core.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\net45\System.Reactive.Core.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\portable-net40+sl5+win8+wp8\System.Reactive.Core.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\portable-net40+sl5+win8+wp8\System.Reactive.Core.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Core.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Core.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\portable-win81+wpa81\System.Reactive.Core.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\portable-win81+wpa81\System.Reactive.Core.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\portable-windows8+net45+wp8\System.Reactive.Core.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\sl5\System.Reactive.Core.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\sl5\System.Reactive.Core.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\windows8\System.Reactive.Core.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\windows8\System.Reactive.Core.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\windowsphone71\System.Reactive.Core.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\windowsphone71\System.Reactive.Core.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\windowsphone8\System.Reactive.Core.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\windowsphone8\System.Reactive.Core.XML
Libraries found in l:\git\FSharp.Control.Reactive\packages\Rx-Linq:
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\net40\System.Reactive.Linq.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\net40\System.Reactive.Linq.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\net45\System.Reactive.Linq.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\net45\System.Reactive.Linq.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\portable-net40+sl5+win8+wp8\System.Reactive.Linq.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\portable-net40+sl5+win8+wp8\System.Reactive.Linq.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Linq.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Linq.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\portable-win81+wpa81\System.Reactive.Linq.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\portable-win81+wpa81\System.Reactive.Linq.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\portable-windows8+net45+wp8\System.Reactive.Linq.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\sl5\System.Reactive.Linq.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\sl5\System.Reactive.Linq.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\windows8\System.Reactive.Linq.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\windows8\System.Reactive.Linq.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\windowsphone71\System.Reactive.Linq.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\windowsphone71\System.Reactive.Linq.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\windowsphone8\System.Reactive.Linq.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\windowsphone8\System.Reactive.Linq.XML
Libraries found in l:\git\FSharp.Control.Reactive\packages\Rx-Experimental:
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\net40\System.Reactive.Experimental.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\net40\System.Reactive.Experimental.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\net45\System.Reactive.Experimental.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\net45\System.Reactive.Experimental.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\portable-net40+sl5+win8+wp8\System.Reactive.Experimental.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\portable-net40+sl5+win8+wp8\System.Reactive.Experimental.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Experimental.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Experimental.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\portable-win81+wpa81\System.Reactive.Experimental.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\portable-win81+wpa81\System.Reactive.Experimental.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\portable-windows8+net45+wp8\System.Reactive.Experimental.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\portable-windows8+net45+wp8\System.Reactive.Experimental.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\sl5\System.Reactive.Experimental.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\sl5\System.Reactive.Experimental.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\windows8\System.Reactive.Experimental.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\windows8\System.Reactive.Experimental.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\windowsphone71\System.Reactive.Experimental.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\windowsphone71\System.Reactive.Experimental.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\windowsphone8\System.Reactive.Experimental.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Experimental\lib\windowsphone8\System.Reactive.Experimental.XML
Rx-Providers 2.2.5 already downloaded
Rx-Main 2.2.5 already downloaded
Rx-PlatformServices 2.2.5 already downloaded
Rx-Providers 2.2.5 already copied
Rx-Main 2.2.5 already copied
Rx-Providers 2.2.5 already extracted
Rx-PlatformServices 2.2.5 already copied
Rx-Main 2.2.5 already extracted
Rx-PlatformServices 2.2.5 already extracted
No libraries found in l:\git\FSharp.Control.Reactive\packages\Rx-Main
Rx-Testing 2.2.5 already downloaded
Rx-Testing 2.2.5 already copied
Libraries found in l:\git\FSharp.Control.Reactive\packages\Rx-Providers:
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\net40\System.Reactive.Providers.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\net40\System.Reactive.Providers.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\net45\System.Reactive.Providers.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\net45\System.Reactive.Providers.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\portable-net40+sl5+win8+wp8\System.Reactive.Providers.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\portable-net40+sl5+win8+wp8\System.Reactive.Providers.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Providers.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Providers.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\portable-win81+wpa81\System.Reactive.Providers.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\portable-win81+wpa81\System.Reactive.Providers.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\portable-windows8+net45+wp8\System.Reactive.Providers.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\portable-windows8+net45+wp8\System.Reactive.Providers.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\sl5\System.Reactive.Providers.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\sl5\System.Reactive.Providers.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\windows8\System.Reactive.Providers.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\windows8\System.Reactive.Providers.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\windowsphone71\System.Reactive.Providers.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\windowsphone71\System.Reactive.Providers.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\windowsphone8\System.Reactive.Providers.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\windowsphone8\System.Reactive.Providers.XML
Rx-Testing 2.2.5 already extracted
SourceLink.Fake 0.4.0 already downloaded
Libraries found in l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices:
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\net40\System.Reactive.PlatformServices.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\net40\System.Reactive.PlatformServices.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\net45\System.Reactive.PlatformServices.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\net45\System.Reactive.PlatformServices.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\portable-net40+sl5+win8+wp8\System.Reactiv
e.PlatformServices.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\portable-net40+sl5+win8+wp8\System.Reactiv
e.PlatformServices.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\portable-net45+winrt45+wp8+wpa81\System.Re
active.PlatformServices.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\portable-net45+winrt45+wp8+wpa81\System.Re
active.PlatformServices.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\portable-win81+wpa81\System.Reactive.Platf
ormServices.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\portable-win81+wpa81\System.Reactive.Platf
ormServices.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\portable-windows8+net45+wp8\System.Reactiv
e.PlatformServices.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\portable-windows8+net45+wp8\System.Reactiv
e.PlatformServices.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\sl5\System.Reactive.PlatformServices.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\sl5\System.Reactive.PlatformServices.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\windows8\System.Reactive.PlatformServices.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\windows8\System.Reactive.PlatformServices.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\windowsphone71\System.Reactive.PlatformSer
vices.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\windowsphone71\System.Reactive.PlatformSer
vices.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\windowsphone8\System.Reactive.PlatformServ
ices.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\windowsphone8\System.Reactive.PlatformServ
ices.XML
SourceLink.Fake 0.4.0 already copied
Libraries found in l:\git\FSharp.Control.Reactive\packages\Rx-Testing:
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\net40\Microsoft.Reactive.Testing.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\net40\Microsoft.Reactive.Testing.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\net45\Microsoft.Reactive.Testing.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\net45\Microsoft.Reactive.Testing.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\sl5\Microsoft.Reactive.Testing.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\sl5\Microsoft.Reactive.Testing.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\windows8\Microsoft.Reactive.Testing.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\windows8\Microsoft.Reactive.Testing.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\windowsphone71\Microsoft.Reactive.Testing.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\windowsphone71\Microsoft.Reactive.Testing.XML
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\windowsphone8\Microsoft.Reactive.Testing.dll
- l:\git\FSharp.Control.Reactive\packages\Rx-Testing\lib\windowsphone8\Microsoft.Reactive.Testing.XML
SourceLink.Fake 0.4.0 already extracted
No libraries found in l:\git\FSharp.Control.Reactive\packages\SourceLink.Fake
Installing to l:\git\FSharp.Control.Reactive\src\FSharp.Control.Reactive.fsproj
- Deleting Paket Reference nodes
Installing to l:\git\FSharp.Control.Reactive\tests\FSharp.Control.Reactive.Tests.fsproj
- Deleting Paket Reference nodes
- custom nodes for Rx-Testing ==> skipping
00.93s - ready.
Building project with version: LocalBuild
Shortened DependencyGraph for Target All:
<== All
<== RunTests
<== Build
<== AssemblyInfo
<== CopyLicense
<== Clean
The resulting target order is:
- Clean
- CopyLicense
- AssemblyInfo
- Build
- RunTests
- All
Starting Target: Clean
Deleting contents of bin
Deleting contents of temp
Finished Target: Clean
Starting Target: CopyLicense (==> Clean)
Finished Target: CopyLicense
Starting Target: AssemblyInfo (==> CopyLicense)
Created AssemblyInfo file "src/AssemblyInfo.fs".
Finished Target: AssemblyInfo
Starting Target: Build (==> AssemblyInfo)
Building project: l:\git\FSharp.Control.Reactive\FSharp.Control.Reactive.sln
C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe l:\git\FSharp.Control.Reactive\FSharp.Control.Reactive.
sln /t:Rebuild /m /p:Configuration="Release" /logger:Fake.MsBuildLogger+ErrorLogger,"l:\git\FSharp.Control
.Reactive\packages\FAKE\tools\FakeLib.dll"
C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe l:\git\FSharp.Control.Reactive\FSharp.Control.Reactive.sl
n /t:Rebuild /m /p:Configuration="Release" /logger:Fake.MsBuildLogger+ErrorLogger,"l:\git\FSharp.Control.R
eactive\packages\FAKE\tools\FakeLib.dll"
Microsoft (R) Build Engine версии 12.0.30723.0
[Microsoft .NET Framework версии 4.0.30319.18444]
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
Сборка начата 02.11.2014 10:24:25.
1>Проект "l:\git\FSharp.Control.Reactive\FSharp.Control.Reactive.sln" в узле 1 (целевые объекты Rebuild)
.
1>ValidateSolutionConfiguration:
Создание конфигурации решения "Release|Any CPU".
1>Проект "l:\git\FSharp.Control.Reactive\FSharp.Control.Reactive.sln" (1) выполняет сборку "l:\git\FShar
p.Control.Reactive\src\FSharp.Control.Reactive.fsproj" (2) в узле 1 (целевые объекты Rebuild).
2>CoreClean:
Файл "l:\git\FSharp.Control.Reactive\src\obj\Release\FSharp.Control.Reactive.fsprojResolveAssemblyRe
ference.cache" удаляется.
Файл "l:\git\FSharp.Control.Reactive\src\obj\Release\FSharp.Control.Reactive.dll" удаляется.
Файл "l:\git\FSharp.Control.Reactive\src\obj\Release\FSharp.Control.Reactive.pdb" удаляется.
1>Проект "l:\git\FSharp.Control.Reactive\FSharp.Control.Reactive.sln" (1) выполняет сборку "l:\git\FShar
p.Control.Reactive\tests\FSharp.Control.Reactive.Tests.fsproj" (3) в узле 2 (целевые объекты Rebuild).
3>CoreClean:
Файл "l:\git\FSharp.Control.Reactive\tests\obj\Release\FSharp.Control.Reactive.Tests.fsprojResolveAs
semblyReference.cache" удаляется.
2>RestorePackages:
"l:\git\FSharp.Control.Reactive\.paket\paket.exe" install
3>RestorePackages:
"l:\git\FSharp.Control.Reactive\.paket\paket.exe" install
2>RestorePackages:
Paket version 0.11.12.0
3>RestorePackages:
Paket version 0.11.12.0
2>RestorePackages:
- custom nodes for Rx-Testing ==> skipping
3>RestorePackages:
- custom nodes for Rx-Testing ==> skipping
2>RestorePackages:
00.91s - ready.
3>RestorePackages:
00.91s - ready.
2>GenerateTargetFrameworkMonikerAttribute:
Целевой объект "GenerateTargetFrameworkMonikerAttribute" пропускается, так как все выходные файлы акту
альны по отношению к входным.
CoreCompile:
C:\Program Files (x86)\Microsoft SDKs\F#\3.1\Framework\v4.0\fsc.exe -o:obj\Release\FSharp.Control.Re
active.dll --debug:pdbonly --noframework --define:TRACE --doc:..\bin\FSharp.Control.Reactive.XML --o
ptimize+ -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.3.1.0
\FSharp.Core.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\
v4.0\mscorlib.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework
\v4.0\System.Core.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFrame
work\v4.0\System.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramew
ork\v4.0\System.Numerics.dll" -r:l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\net40\System.Re
active.Core.dll -r:l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\net40\System.Reactive.I
nterfaces.dll -r:l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\net40\System.Reactive.Linq.dll
-r:l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\net40\System.Reactive.PlatformSer
vices.dll -r:l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\net40\System.Reactive.Provider
s.dll --target:library --warn:3 --warnaserror:76 --fullpaths --flaterrors --highentropyva- "C:\Users
\kot\AppData\Local\Temp\.NETFramework,Version=v4.0.AssemblyAttributes.fs" Observable.fs
_CopyFilesMarkedCopyLocal:
Копирование файла из "l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\net40\System.Reactive.Core
.dll" в "..\bin\System.Reactive.Core.dll".
Копирование файла из "l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\net40\System.Reactiv
e.Interfaces.dll" в "..\bin\System.Reactive.Interfaces.dll".
Копирование файла из "l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\net40\System.Reactive.Linq
.dll" в "..\bin\System.Reactive.Linq.dll".
Копирование файла из "l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\net40\System.R
eactive.PlatformServices.dll" в "..\bin\System.Reactive.PlatformServices.dll".
Копирование файла из "l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\net40\System.Reactive
.Providers.dll" в "..\bin\System.Reactive.Providers.dll".
Копирование файла из "l:\git\FSharp.Control.Reactive\packages\Rx-Core\lib\net40\System.Reactive.Core
.xml" в "..\bin\System.Reactive.Core.xml".
Копирование файла из "l:\git\FSharp.Control.Reactive\packages\Rx-Interfaces\lib\net40\System.Reactiv
e.Interfaces.xml" в "..\bin\System.Reactive.Interfaces.xml".
Копирование файла из "l:\git\FSharp.Control.Reactive\packages\Rx-Linq\lib\net40\System.Reactive.Linq
.xml" в "..\bin\System.Reactive.Linq.xml".
Копирование файла из "l:\git\FSharp.Control.Reactive\packages\Rx-PlatformServices\lib\net40\System.R
eactive.PlatformServices.xml" в "..\bin\System.Reactive.PlatformServices.xml".
Копирование файла из "l:\git\FSharp.Control.Reactive\packages\Rx-Providers\lib\net40\System.Reactive
.Providers.xml" в "..\bin\System.Reactive.Providers.xml".
CopyFilesToOutputDirectory:
Копирование файла из "obj\Release\FSharp.Control.Reactive.dll" в "..\bin\FSharp.Control.Reactive.dll
".
FSharp.Control.Reactive -> l:\git\FSharp.Control.Reactive\bin\FSharp.Control.Reactive.dll
Копирование файла из "obj\Release\FSharp.Control.Reactive.pdb" в "..\bin\FSharp.Control.Reactive.pdb
".
2>Сборка проекта "l:\git\FSharp.Control.Reactive\src\FSharp.Control.Reactive.fsproj" завершена (целевые
объекты Rebuild).
3>GenerateTargetFrameworkMonikerAttribute:
Целевой объект "GenerateTargetFrameworkMonikerAttribute" пропускается, так как все выходные файлы акту
альны по отношению к входным.
CoreCompile:
C:\Program Files (x86)\Microsoft SDKs\F#\3.1\Framework\v4.0\fsc.exe -o:obj\Release\FSharp.Control.Re
active.Tests.dll --debug:pdbonly --noframework --define:TRACE --optimize+ -r:l:\git\FSharp.Control.R
eactive\bin\FSharp.Control.Reactive.dll -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\FS
harp\.NETFramework\v4.0\4.3.1.0\FSharp.Core.dll" -r:"C:\Program Files (x86)\Microsoft Visual Studio
12.0\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll"
-r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll
" -r:l:\git\FSharp.Control.Reactive\packages\NUnit\lib\nunit.framework.dll -r:"C:\Program Files (x86
)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll" -r:"C:\Program Files
(x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll" -r:"C:\Program Files (
x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Numerics.dll" -r:l:\git\FSha
rp.Control.Reactive\packages\Rx-Core\lib\net40\System.Reactive.Core.dll -r:l:\git\FSharp.Control.Rea
ctive\packages\Rx-Experimental\lib\net40\System.Reactive.Experimental.dll -r:l:\git\FSharp.Control.R
eactive\packages\Rx-Interfaces\lib\net40\System.Reactive.Interfaces.dll -r:l:\git\FSharp.Control.Rea
ctive\packages\Rx-Linq\lib\net40\System.Reactive.Linq.dll -r:l:\git\FSharp.Control.Reactive\packages
\Rx-PlatformServices\lib\net40\System.Reactive.PlatformServices.dll -r:l:\git\FSharp.Control.Reactiv
e\packages\Rx-Providers\lib\net40\System.Reactive.Providers.dll --target:library --warn:3 --warnaser
ror:76 --fullpaths --flaterrors --highentropyva- "C:\Users\kot\AppData\Local\Temp\.NETFramework,Vers
ion=v4.0.AssemblyAttributes.fs" ObservableSpecs.fs
3>l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(8,16): error FS0039: The namespace 'Reactive'
is not defined [l:\git\FSharp.Control.Reactive\tests\FSharp.Control.Reactive.Tests.fsproj]
3>l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(167,21): error FS0039: The value or constructo
r 'TestScheduler' is not defined [l:\git\FSharp.Control.Reactive\tests\FSharp.Control.Reactive.Tests.f
sproj]
3>l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(174,5): error FS0072: Lookup on object of inde
terminate type based on information prior to this program point. A type annotation may be needed prior
to this program point to constrain the type of the object. This may allow the lookup to be resolved.
[l:\git\FSharp.Control.Reactive\tests\FSharp.Control.Reactive.Tests.fsproj]
3>Сборка проекта "l:\git\FSharp.Control.Reactive\tests\FSharp.Control.Reactive.Tests.fsproj" завершена (
целевые объекты Rebuild) с ошибкой.
1>Сборка проекта "l:\git\FSharp.Control.Reactive\FSharp.Control.Reactive.sln" завершена (целевые объекты
Rebuild) с ошибкой.
Ошибка сборки.
"l:\git\FSharp.Control.Reactive\FSharp.Control.Reactive.sln" (целевой объект Rebuild ) (1) ->
"l:\git\FSharp.Control.Reactive\tests\FSharp.Control.Reactive.Tests.fsproj" (целевой объект Rebuild )
(3) ->
(Целевой объект CoreCompile) ->
l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(8,16): error FS0039: The namespace 'Reactive
' is not defined [l:\git\FSharp.Control.Reactive\tests\FSharp.Control.Reactive.Tests.fsproj]
l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(167,21): error FS0039: The value or construc
tor 'TestScheduler' is not defined [l:\git\FSharp.Control.Reactive\tests\FSharp.Control.Reactive.Tests
.fsproj]
l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(174,5): error FS0072: Lookup on object of in
determinate type based on information prior to this program point. A type annotation may be needed pri
or to this program point to constrain the type of the object. This may allow the lookup to be resolved
. [l:\git\FSharp.Control.Reactive\tests\FSharp.Control.Reactive.Tests.fsproj]
Предупреждений: 0
Ошибок: 3
Затраченное время: 00:00:03.80
Running build failed.
Error:
Building l:\git\FSharp.Control.Reactive\FSharp.Control.Reactive.sln failed with exitcode 1.
---------------------------------------------------------------------
Build Time Report
---------------------------------------------------------------------
Target Duration
------ --------
Clean 00:00:00.0058689
CopyLicense 00:00:00.0038034
AssemblyInfo 00:00:00.0086533
Total: 00:00:04.3059654
Status: Failure
---------------------------------------------------------------------
1) Building l:\git\FSharp.Control.Reactive\FSharp.Control.Reactive.sln failed with exitcode 1.
2) FS0039: l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(8,16): The namespace 'Reactive' is not de
fined
3) FS0039: l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(167,21): The value or constructor 'TestSc
heduler' is not defined
4) FS0072: l:\git\FSharp.Control.Reactive\tests\ObservableSpecs.fs(174,5): Lookup on object of indeterminate
type based on information prior to this program point. A type annotation may be needed prior to this program
point to constrain the type of the object. This may allow the lookup to be resolved.
---------------------------------------------------------------------
I'd be nice to use this in other places than lib/net40 (Android/iOS)
What do you think of adding some simple functions that are analogous to those in System.Reactive.Threading.Tasks.TaskObservableExtensions. Essentially:
Observable.toAsync -> Returns an Async workflow that computes the last value of the observable sequence.
Async.toObservable -> Returns a cold observable sequence that signals when the Async workflow completes.
I have the following sample code:
open System
open FSharp.Control.Reactive
open System.Reactive.Disposables
open System.Reactive.Linq
let obs =
Observable.Create(fun (obs : IObserver) -> obs.OnNext("www"); Action( fun _ -> printfn "www -> Disposing" ) )
|> Observable.subscribe (fun x -> printfn "%A" x)
let obs1 =
Observable.create (fun obs -> obs.OnNext("xxx"); fun _ -> () )
|> Observable.subscribe (fun x -> printfn "%A" x)
let obs2 =
Observable.createWithDisposable(fun obs -> obs.OnNext("yyy") ; Disposable.Create( fun _ -> printfn "yyy -> Disposing" ))
|> Observable.subscribe (fun x -> printfn "%A" x)
[]
let main argv =
use o = obs
use o1 = obs1
use o2 = obs2
0 // return an integer exit code
--- This produces the output in my F# Console Application ---
"www"
"yyy"
yyy -> Disposing
www -> Disposing
Press any key to continue . . .
Notice that the "xxx" is missing from the output. This is the version using Observable.create from the FSharp.Reactive.Control library and it appears that the OnNext is never called. I've tried a few variations including:
let obs1 =
Observable.create (fun obs () -> obs.OnNext("xxx"); )
|> Observable.subscribe (fun x -> printfn "%A" x)
and
let obs1 =
Observable.create (fun obs -> fun _ -> obs.OnNext("xxx"); )
|> Observable.subscribe (fun x -> printfn "%A" x)
but can't get this to work.
I've raised a StackOverflow question: http://stackoverflow.com/questions/29436180/how-do-you-use-observable-create-in-the-fsharp-control-reactive-library
Am I doing something wrong or is the implementation broken?
Thanks
It would be so great if this library came with tutorial-style docs, like many of the other F# community libraries. At the moment http://fsprojects.github.io/FSharp.Control.Reactive/ looks like "work in progress" because the tutorials aren't there.
I'd like to contribute to this myself too. Ideally each checkin that adds new functionality would also add a sample to the tutorial scripts.
Entering this now because of this twitter thread
The latest version on https://www.nuget.org/packages/FSharp.Control.Reactive/ is 3.4.1.
Is it possible to have more documentation on this with examples.
I tried to add the NuGet package to my project which was using PCL profile 78, which did not work. I tried to update my project's profile to 259 and tried again. It still did not work.
Please provide the steps required to reproduce the problem
Create PCL project in Visual Studio Mac, targeting profile 78 or 259.
Try to add the FSharp.Control.Reactive Nuget package to the project.
The package is successfully added to the project.
Received error message in Package Console:
Could not install package 'FSharp.Control.Reactive 3.5.0'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile259', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.
Similar to flatmapTask for f# async. Probably using Async.StartImmediate. I can provide PRs if your in agreement.
Please add @cloudRoutine as a contributor. I don't have access to do so, but he's acknowledged he'd like to help. See https://groups.google.com/d/msg/fsharp-opensource/dePsmAQHMjk/WL84W4JMPlYJ
Hi,
I am currently using a sub interface from the IObservable and I need to upcast it everytime I use one of your wrapped method. I was wondering if you would see any reason why not replacing all (x : IObservable<>) with (x : #IObservable<>) so it can accept sub interfaces?
If you think it is all good for you I will make a PR.
Cheers,
Amaury
Hi all,
I wanted to expand the repository to include also Subjects
and Testing
operators. I created a separate branch: testing-and-subjects where I tried to come up with some ideas.
Before I create a Pull Request; I want to make sure that my idea for expanding the API is OK and (if possible) we could make an extra NuGet package (ex. FSharp.Control.Reactive.Testing) where the testing-related functions are located.
Thanks in advance!
Greetings
Stijn
All of the built-in zip
functions (List, Seq, Array) don't take a result selector function, they just produce a tuple. I realise that this lib just reflects the Rx implementation, but (IMO) it would be better to wrap the function with a tuple projection and expose the same signature as the other modules. It would also facilitate clearer piped syntax (currently the projection is the final parameter).
Perhaps the existing function could be renamed to zipWith?
(Apologies if this has been addressed before)
Can FSharp.Control.Reactive be released as a PCL (preferably profile 259) instead of net40? AFAICT from browsing the code there isn't anything that would require non PCL friendly code. RX is already distro'd with PCL 259 and this would enable use of the library on mobile platforms in addition to traditional desktop/server applications.
nuget/paket.template has 'id FSharp.Compiler.Service'
Should probably be
id FSharp.Control.Reactive
The following RxQueryBuilder methods all result in compiler warnings about utilizing deprecated constructs. Frankly I would recommend removing these and replacing them with their IObservable duals. (SingleAsync, SingleOrDefaultAsync, FirstAsync, etc.) as the blocking methods are deadlock prone.
member __.ExactlyOne (s:IObservable<>) = s.Single()
member __.ExactlyOneOrDefault (s:IObservable<>) = s.SingleOrDefault()
member __.Find (s:IObservable<>, [] predicate : _ -> bool) = s.First(new Func<,bool>(predicate))
member __.Head (s:IObservable<>) = s.First()
member __.HeadOrDefault (s:IObservable<>) = s.FirstOrDefault()
member __.Last (s:IObservable<>) = s.Last()
member __.LastOrDefault (s:IObservable<>) = s.LastOrDefault()
Not sure the build even works on Win7.
Not sure whether I'm doing something wrong but when I try to import this package via Nuget into a project targeting Profile259 I get the error:
Install failed. Rolling back...
Could not install package 'FSharp.Control.Reactive 2.3.5'. You are trying to install this package into a project that targets 'portable-net45+win+wpa81+wp80+MonoAndroid10+MonoTouch10', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.
Are there any plans to support this profile?
Thanks
No version specified, and it's not finding one using reflection.
FSharp.Formatting is currently failing. Steps to repro:
.\build.cmd Release
from the command lineindex.fsx
@panesofglass What do you think about:
3.4.0 no longer supports .NET 4.0
Using Paket update 3.2.0 -> 3.4.0 and get warning:
Package FSharp.Control.Reactive contains libraries, but not for the selected TargetFramework net40 in project /Users/kevinknoop/Projects/agentNext/agent.mac/Agent.Mac.fsproj.
Paket should complete with no warnings.
Paket issues warning.
None
This method is dubious at best. The current implementation does a reference compare to the object returned by Observable.Empty() afaict.
/// Determines whether the given observable is empty
let isEmpty source = source = Observable.Empty()
For instance this could easily result in a false result if an Observable was created from an empty array, or if the implementation of Observable.Empty() was changed not to return a singleton instance.
Keep the existing Rx for 4.0, possibly adding a .NET 3.5 option, as well.
Ubuntu 14.10, Mono 3.10, freshly built Monodevelop 5.7
F# Interactive for F# 3.1 (private)
Freely distributed under the Apache 2.0 Open Source License
For help type #help;;
> [Loading /home/kot/github/FSharp.Control.Reactive/build.fsx]
/home/kot/github/FSharp.Control.Reactive/build.fsx(6,1): error FS0078: Unable to find the file 'Nuget.Core.dll' in any of
/usr/lib/mono/4.5
/home/kot/github/FSharp.Control.Reactive/packages/FAKE/tools
/home/kot/github/FSharp.Control.Reactive
/home/kot/github/FSharp.Control.Reactive/packages/FAKE/tools/
All the variants of replay call Observable.Replay( source ).
Run the build on OSX using:
sh build.sh
Attempt to create the nuget package:
cd nuget
mono ../.paket/paket.exe pack output tmp
Get:
Paket version 2.62.6.0
Paket failed with:
The file "../bin/v4.5/FSharp.Control.Reactive.xml" requested in /Users/james/git/FSharp.Control.Reactive/nuget/paket.template does not exist.
Looks like it's a case problem (../bin/v4.5/FSharp.Control.Reactive.xml doesn't exist, but ../bin/v4.5/FSharp.Control.Reactive.XML is there).
I just noticed this this other day that this is missing an overload of Observable.SubscribeOn. I would send a PR for it but there's an issue I found doing so.
There are the overloads for observeOn provided
let observeOn (scheduler:Concurrency.IScheduler)
let observeOnContext (context:SynchronizationContext)
There is a "subscribeOn" provided with the SynchronizationContext
let subscribeOn (context:Threading.SynchronizationContext)
but no version provided with the IScheduler.
If I introduce something like subscribeOnScheduler
let subscribeOnScheduler (scheduler:Reactive.Concurrency.IScheduler)
This will now have an odd naming convention, but the other option is to break the existing API.
What do you think we should do?
Uploading artifact bin\FSharp.Control.Reactive.2.4.0.nupkg (117.1 KB)...Done
Deploying using NuGet provider
nuget push "C:\projects\fsharp-control-reactive\bin\FSharp.Control.Reactive.2.4.0.nupkg" -ApiKey ...
Pushing FSharp.Control.Reactive 2.4.0 to the NuGet gallery (https://www.nuget.org)...
ERROR: Failed to process request. 'A package with id 'FSharp.Control.Reactive' and version '2.4.0' already exists and cannot be modified.'.
ERROR: The remote server returned an error: (409) Conflict..
nuget process exited with code 1
Is it intentional?
The following very simple code does not compile in FSI:
open System.Reactive.Linq
open FSharp.Control.Reactive
let a = seq [1;2;4]
let a2 = a.ToObservable()
let o1 = a2 |> Observable.iter(fun _ -> ()) //error here
The error I get is:
error FS0074: The type referenced through 'System.Reactive.Linq.Observable' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Reactive.Linq'.
System.Reactive.Linq is already referenced so I don't understand what might be happening.
Rx-Main 2.2.5, the package this things current nuget package depends on, has been unlisted from nuget. When they updated to v3.0 of rx.net, they changed the name to System.Reactive. We might need a new release of this to track the new Rx library, assuming that they didn't break anything.
Per the guidelines here, please consider renaming this repo, project files and nuget package to
Thanks
Don
The links pointing to source code in API reference documents are invalid.
The documents affected:
Observable
ObservableBuilder
RxQueryBuilder
It may make sense to modify the build.fsx
script to create the AssemblyInfo.fs
and NuGet package using a version number based on the Rx package version.
For example, for Rx 2.2.2, we might create the FSharp.Reactive package with version number 2.2.2.0. This would make it easier for users to know they're using a version of FSharp.Reactive that matches a specific version of the Rx packages, which is important if Rx is being used in a polyglot solution (e.g., F#/C#, F#/VB.NET). The Rx packages only use the first three numbers in the version number, so we could use the fourth to allow updates/fixes to the FSharp.Reactive package without breaking the versioning scheme.
The example on http://fsprojects.github.io/FSharp.Control.Reactive/tutorial.html doesn't seem to compile.
There should be no compiler error.
There is a compiler error:
"This value is not a function and cannot be applied"
Observable.zip
expects two observables as parameters we have to use Observable.zipWith
which expects a function as a first parameter and two observables.
@forki Are you publishing this NuGet package? The build I have under the Fracture project on TeamCity. If you don't have a working build, would you mind helping me resolve it?
Cannot start build runner: Content is not allowed in prolog.
Hide stacktrace
jetbrains.buildServer.util.XmlXppAbstractParser$3: Content is not allowed in prolog.
at jetbrains.buildServer.util.XmlXppAbstractParser.parse(XmlXppAbstractParser.java:41)
at jetbrains.buildServer.util.XmlXppAbstractParser.parse(XmlXppAbstractParser.java:33)
at jetbrains.buildServer.nuget.agent.runner.install.impl.locate.ResourcesConfigPackagesScanner.listPackagesConfigs(ResourcesConfigPackagesScanner.java:59)
at jetbrains.buildServer.nuget.agent.runner.install.impl.locate.ResourcesConfigPackagesScanner.scanResourceConfig(ResourcesConfigPackagesScanner.java:51)
at jetbrains.buildServer.nuget.agent.runner.install.impl.locate.LocateNuGetConfigBuildProcess.locatePackagesConfigFiles(LocateNuGetConfigBuildProcess.java:96)
at jetbrains.buildServer.nuget.agent.runner.install.impl.locate.LocateNuGetConfigBuildProcess.waitForImpl(LocateNuGetConfigBuildProcess.java:76)
at jetbrains.buildServer.nuget.agent.util.BuildProcessBase.waitFor(BuildProcessBase.java:51)
at jetbrains.buildServer.nuget.agent.util.impl.CompositeBuildProcessImpl.waitForImpl(CompositeBuildProcessImpl.java:60)
at jetbrains.buildServer.nuget.agent.util.BuildProcessBase.waitFor(BuildProcessBase.java:51)
at jetbrains.buildServer.nuget.agent.util.impl.CompositeBuildProcessImpl.waitForImpl(CompositeBuildProcessImpl.java:60)
at jetbrains.buildServer.nuget.agent.util.BuildProcessBase.waitFor(BuildProcessBase.java:51)
at jetbrains.buildServer.agent.impl.buildStages.runnerStages.start.CallRunnerStage.doBuildStage(CallRunnerStage.java:59)
at jetbrains.buildServer.agent.impl.buildStages.RunnerStagesExecutor$1.callStage(RunnerStagesExecutor.java:25)
at jetbrains.buildServer.agent.impl.buildStages.RunnerStagesExecutor$1.callStage(RunnerStagesExecutor.java:18)
at jetbrains.buildServer.agent.impl.buildStages.StagesExecutor.callRunStage(StagesExecutor.java:78)
at jetbrains.buildServer.agent.impl.buildStages.StagesExecutor.doStages(StagesExecutor.java:37)
at jetbrains.buildServer.agent.impl.buildStages.RunnerStagesExecutor.doStages(RunnerStagesExecutor.java:18)
at jetbrains.buildServer.agent.impl.buildStages.startStages.steps.RunnerContextExecutor.callRunnerStages(RunnerContextExecutor.java:43)
at jetbrains.buildServer.agent.impl.buildStages.startStages.steps.StepExecutor.doProcessNextStep(StepExecutor.java:89)
at jetbrains.buildServer.agent.impl.buildStages.startStages.steps.StepExecutor.processNextStep(StepExecutor.java:44)
at jetbrains.buildServer.agent.impl.buildStages.startStages.steps.ForEachBuildRunnerStage.doBuildStage(ForEachBuildRunnerStage.java:77)
at jetbrains.buildServer.agent.impl.buildStages.BuildStagesExecutor$1.callStage(BuildStagesExecutor.java:31)
at jetbrains.buildServer.agent.impl.buildStages.BuildStagesExecutor$1.callStage(BuildStagesExecutor.java:24)
at jetbrains.buildServer.agent.impl.buildStages.StagesExecutor.callRunStage(StagesExecutor.java:78)
at jetbrains.buildServer.agent.impl.buildStages.StagesExecutor.doStages(StagesExecutor.java:37)
at jetbrains.buildServer.agent.impl.buildStages.BuildStagesExecutor.doStages(BuildStagesExecutor.java:24)
at jetbrains.buildServer.agent.impl.BuildRunAction.doStages(BuildRunAction.java:70)
at jetbrains.buildServer.agent.impl.BuildRunAction.runBuild(BuildRunAction.java:50)
at jetbrains.buildServer.agent.impl.BuildAgentImpl.doActualBuild(BuildAgentImpl.java:247)
at jetbrains.buildServer.agent.impl.BuildAgentImpl.access$100(BuildAgentImpl.java:48)
at jetbrains.buildServer.agent.impl.BuildAgentImpl$1.run(BuildAgentImpl.java:220)
at java.lang.Thread.run(Unknown Source)
Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at jetbrains.buildServer.util.XmlXppAbstractParser.parseWithSAX(XmlXppAbstractParser.java:237)
at jetbrains.buildServer.util.XmlXppAbstractParser.parse(XmlXppAbstractParser.java:39)
... 31 more
I just looked at the ObservableBuilder
for the first time and noticed it has the following definitions:
member __.Bind(m: IObservable<_>, f: _ -> IObservable<_>) = m.SelectMany(f)
member __.Combine(comp1, comp2) = Observable.Concat(comp1, comp2)
SelectMany
merges the observable sequences, while Concat
concatenates the sequences. To me this looks very odd, because this means the builder uses two different semantics for combining sequences. Googling revealed that this aspect has also been noticed earlier.
To me it would make more sense if Bind
were defined as:
member __.Bind(m: IObservable<_>, f: _ -> IObservable<_>) = m.Select(f).Concat()
Note that I just mention this because the current definition looks odd. I have no plans to use the builder at the moment.
In C# it requires the map function because tuples weren't part of .NET 4, and they're not that nice to work with in C#, but in F# the map function is painful. Let me know, I can submit a pr for this too once approved.
I think that the type parameters for Observable.zip are incorrect. Currently it's defined as:
/// Merges two observable sequences into one observable sequence
let zip (second: IObservable<'T>) (first: IObservable<'T>) =
let inner a b = a, b
Observable.Zip(first, second, Func<,,_> inner)
Whereas the Reactive Observable.Zip takes two different type parameters.
I therefore think it should be defined as:
/// Merges two observable sequences into one observable sequence
let zip (second: IObservable<'U>) (first: IObservable<'T>) =
let inner a b = a, b
Observable.Zip(first, second, Func<,,_> inner)
It would be really useful if this library provided some F# friend module functions that wrap the Disposables supported by RX. Specifically, I'm thinking something like
module Disposables =
let composite (disposables:IEnumerable<IDisposable) =
let retval = new CompositeDisposable()
for disposable in do retval.Add disposable
retval :> IDisposable
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.