Git Product home page Git Product logo

fsharp.control.reactive's Introduction

fsharp.control.reactive's People

Contributors

alexfoxgill avatar bordoley avatar cartermp avatar cloudroutine avatar danien avatar deviousasti avatar dsyme avatar forki avatar fsprojectsgit avatar hafuu avatar jlewicki avatar kblohm avatar leafgarland avatar lowleveldesign avatar marklam avatar mattrudder avatar micha-kun avatar mrakgr avatar panesofglass avatar rutgersc avatar sergey-tihon avatar stijnmoreels avatar tachyus-ryan avatar theangrybyrd avatar tmoers avatar totbwf avatar vasily-kirichenko avatar xp44mm avatar xperiandri avatar yawaramin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fsharp.control.reactive's Issues

A few System.Funcs not wrapped

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))

Observer.Create in the NuGet package

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?

Subscribe function

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.

Add .nuspec to include the file as Content.

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.

Cannot build the solution on Windows

---------------------------------------------------------------------
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.
---------------------------------------------------------------------

Functions for converting between IObservable<T> and Async<T>

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.

Observable.create doesn't seem to work as expected

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

Usage Examples

Is it possible to have more documentation on this with examples.

Does not support PCL profiles (78/259)

Description

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.

Repro steps

Please provide the steps required to reproduce the problem

  1. Create PCL project in Visual Studio Mac, targeting profile 78 or 259.

  2. Try to add the FSharp.Control.Reactive Nuget package to the project.

Expected behavior

The package is successfully added to the project.

Actual behavior

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.

Known workarounds

  • Copy the one source file directly into your project.
  • Skip PCL madness and move your project to .NET Standard

Related information

  • Operating system: macOS Sierra
  • Branch: ?
  • .NET Runtime, CoreCLR or Mono Version: Whatever comes with Visual Studio Mac. Working with Xamarin.Mac/.iOS currently.
  • Performance information, links to performance testing scripts

Add Observable.flatMapAsync

Similar to flatmapTask for f# async. Probably using Async.StartImmediate. I can provide PRs if your in agreement.

Accept sub interfaces of IObservable<T>

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

Subjects and Testing

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

Observable.zip is inconsistent with Seq/List/Array

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)

PCL 259 Support?

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.

Compiler warnings about RxQueryBuilder

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()

Nuget won't load this package in Profile259

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

Fix document generation

FSharp.Formatting is currently failing. Steps to repro:

  1. Run .\build.cmd Release from the command line
  2. Watch for the stack trace in the build just after docs are generated, specifically as it generates index.fsx

3.4.0 drops support for net40?

Description

3.4.0 no longer supports .NET 4.0

Repro steps

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.

Expected behavior

Paket should complete with no warnings.

Actual behavior

Paket issues warning.

Known workarounds

None

Related information

  • Mac O SX
  • Mono 4.4

Consider removing isEmpty function

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.

Cannot build the solution on Ubuntu

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/

packet pack looks for nonexistant file

Description

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).

Breaking Change: switch order of parameters

Most F# operators that take two of a kind, e.g. List.zip, take item1 then item2. In FSharp.Reactive, we flipped these to better support use of the pipeline operator |>.

Should we flip these back? Perhaps with the next update to Rx 2.4?

@dsyme, @forki, thoughts?

Observable.SubscribeOn overload missing

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?

Build script tries to publish NuGet package on CI

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?

Type reference error in FSI

The following very simple code does not compile in FSI:

r @"..\packages\FSharp.Control.Reactive.3.0.1\lib\net40\FSharp.Control.Reactive.dll"

r @"..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll"

r @"..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll"

r @"..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll"

r @"..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll"

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.

nuget package depends on rx-main 2.2.5, which has been pulled from nuget

Description

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.

Modify build.fsx to use a version number based on the Rx package version

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.

Tutorial doesn't compile

Description

The example on http://fsprojects.github.io/FSharp.Control.Reactive/tutorial.html doesn't seem to compile.

Expected behavior

There should be no compiler error.

Actual behavior

There is a compiler error:
"This value is not a function and cannot be applied"

Known workarounds

Observable.zip expects two observables as parameters we have to use Observable.zipWith which expects a function as a first parameter and two observables.

https://github.com/fsprojects/fsharp.control.reactive/blob/5cee39af56fb732c2baa58bc3d1d791c34c21692/src/FSharp.Control.Reactive/Observable.fs#L1848

TeamCity Build Failing?

@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

Concat or Merge?

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.

Observable.combineLatest should return a tuple

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.

Type parameters for Observable.zip are incorrect

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)

System.Reactive.Disposables wrappers

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.