tag:blogger.com,1999:blog-3761674922653685009.post2494859081189279566..comments2023-11-05T03:40:13.874-08:00Comments on unfold: Introducing Rx (Linq to Events)Jafar Husainhttp://www.blogger.com/profile/15444397760399385108noreply@blogger.comBlogger46125tag:blogger.com,1999:blog-3761674922653685009.post-69740729305194568362009-11-15T22:33:00.289-08:002009-11-15T22:33:00.289-08:00After started playing with this, I just created a ...After started playing with this, I just created a simple text template (T4) to generate Event To Observable wrapper methods for a given type - so that we won't end up handcoding those GetMouseDown(), GetMouseUp() etc events<br /><br />http://amazedsaint.blogspot.com/2009/11/linq-to-events-generating-wrapper.htmlAnoop Mhttps://www.blogger.com/profile/12088269633597034504noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-36468732390245427962009-11-09T16:15:07.929-08:002009-11-09T16:15:07.929-08:00Jafar: That's what I like to hear. Only, I hop...Jafar: That's what I like to hear. Only, I hope it's generic and not tied to WPF or DependencyProperties. The whole ObservableCollection class was defined in too specific an assembly. I'm guessing we need low-level (CLR) support to get this right.Dan Vanderboomhttps://www.blogger.com/profile/15457263400864227892noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-39190306435800173392009-11-08T19:40:59.030-08:002009-11-08T19:40:59.030-08:00Dan Vanderboom: Believe me. There are people thin...Dan Vanderboom: Believe me. There are people thinking deeply about ways of improving reactive programming (including INPC) right now. I predict that things will get better in the near to mid term.Jafar Husainhttps://www.blogger.com/profile/15444397760399385108noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-71025057652436288682009-11-08T18:13:52.555-08:002009-11-08T18:13:52.555-08:00I agree with Pete 100%, and have been beating the ...I agree with Pete 100%, and have been beating the same drum about observing raw property changes for years. We're going to eventually need some sort of implicit INotifyPropertyChanged that we can enable from a subscriber during runtime so we can listen for arbitrary changes of any aspect of accessible state. There's too much ceremony around exposing and publishing "change" events. XChanged, YChanged, ZChanged... at what point will we just say, "okay, let's just allow the programmer to detect and react to any property change?Dan Vanderboomhttps://www.blogger.com/profile/15457263400864227892noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-35970106419514570342009-11-08T01:19:02.805-08:002009-11-08T01:19:02.805-08:00Very nice article , going to play around with this...Very nice article , going to play around with this for a bit.Anonymoushttps://www.blogger.com/profile/11263486577385249299noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-79357395649545094052009-08-08T06:42:29.492-07:002009-08-08T06:42:29.492-07:00This comment has been removed by a blog administrator.Joseph Taylorhttp://www.printingservicing.comnoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-25796653010588908742009-08-03T00:59:26.381-07:002009-08-03T00:59:26.381-07:00This comment has been removed by a blog administrator.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-42207449585823452972009-08-01T20:14:04.398-07:002009-08-01T20:14:04.398-07:00This looks interesting, although I guess I haven&#...This looks interesting, although I guess I haven't understand it completely well.<br /><br />One thing that feels me a little nervous is IObserver. If I had imagined all events and all async APIs are done with IObservable, that means I have to write a class for every event. That'd mean I have to write more lines of code, which I don't like. Also it might make harder to write a code that listens to multiple events as you can't write two observers in a class.<br /><br />I'm wondering it should be<br />IDisposable Subscribe(<br /> Action-T- next,<br /> Action completed,<br /> Action-Exception- error)<br />or create a class of these three and:<br />IDisposable Subscribe(<br /> ObserverArgs-T- o)<br /><br />Maybe it's because I hadn't written much using IObservable, but you'd imagine that consumers are more than producers. Making every consumer to an interface and thus a class feels me nervous.kojiishihttp://www.gluesoft.co.jp/en/noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-89818006271870626002009-07-30T08:29:59.431-07:002009-07-30T08:29:59.431-07:00jacobcarpenter: I'm afraid I didn't get pe...jacobcarpenter: I'm afraid I didn't get permission to post the WPF version of reactive yet. There are good reasons to delay it. In the meantime people have provided workarounds in the comments.<br /><br />The Luddite Developer: IObservable is an excellent choice.<br /><br />pete: Technically this IS functional reactive programming...it just doesn't go as far as FlapJax or Binding Linq for example. IObservable could be seen as a building block for such a framework. At the moment I'm not aware of any plans to move in this direction.<br /><br />Ryan O: The current plan (subject to change) is to release of beta of Rx when VS2010 beta 2 is released. AT that point IObservable and IObserver will be in the BCL and Rx will only contain the extension methods.<br /><br />richardh: Yes. :-) Shortly before release the interface names changed. I'll fix that soon.Jafar Husainhttps://www.blogger.com/profile/15444397760399385108noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-53310914506420767332009-07-30T08:21:05.839-07:002009-07-30T08:21:05.839-07:00@Sébastien LEBRETON
thanks - I used Reflexil and ...@Sébastien LEBRETON<br /><br />thanks - I used Reflexil and it works like a champ!<br /><br />TomUnknownhttps://www.blogger.com/profile/09643496632221421374noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-10724127133293749822009-07-30T07:27:20.848-07:002009-07-30T07:27:20.848-07:00(recomment from Part 1 post)
This is really "...(recomment from Part 1 post)<br /><br />This is really "plain cool".<br /><br />I've tried your code for the mouse button events (Down, Up and Click) but don't seem to work.<br /><br />Observable.FromEvent work with MouseEnter, MouseLeave and MouseWheel but fail to Subscribe with MouseLeftButtonDown and MouseLeftButtonUp.<br /><br />Any ideas what might be happening?<br /><br />BTW, using SL3.Bigsbyhttps://www.blogger.com/profile/16661211593991172494noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-51473483018410510842009-07-30T05:38:15.516-07:002009-07-30T05:38:15.516-07:00You can use Mono.Cecil or even Reflexil (Reflector...You can use <b>Mono.Cecil</b> or even <b>Reflexil</b> (Reflector plugin) to prepare the System.Reactive assembly for use.<br /><br />http://evain.net/blog/articles/2009/07/30/rebasing-system-reactive-to-the-net-clrSébastien LEBRETONhttp://sebastien.lebreton.free.fr/blognoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-79637453572137858202009-07-29T14:35:34.872-07:002009-07-29T14:35:34.872-07:00"When an IObservable invokes the “OnUpdate” m..."When an IObservable invokes the “OnUpdate” method on an Observer it is equivalent to an IEnumerable method using the yield keyword to give information to an IEnumerable."<br /><br />"OnUpdate" should read "OnNext"?richardhnoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-81137500151820838782009-07-29T10:01:06.401-07:002009-07-29T10:01:06.401-07:00This comment has been removed by a blog administrator.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-65823671608466913852009-07-29T03:12:43.480-07:002009-07-29T03:12:43.480-07:00Isn't it just observer pattern done by hand ra...Isn't it just observer pattern done by hand rather than using what's already implemented in .NET using Events?<br />I see no real difference. In both cases we have the push/pull thing though this one just takes some general code and puts it in named classes, which is nice, but i wouldn't make a framework out of it...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-68555138338317158062009-07-28T12:52:40.250-07:002009-07-28T12:52:40.250-07:00This comment has been removed by a blog administrator.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-63706816274493397732009-07-27T19:21:13.009-07:002009-07-27T19:21:13.009-07:00This comment has been removed by a blog administrator.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-48700822752065482602009-07-27T19:21:06.030-07:002009-07-27T19:21:06.030-07:00This comment has been removed by a blog administrator.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-61864284692054455252009-07-27T12:46:50.710-07:002009-07-27T12:46:50.710-07:00This comment has been removed by a blog administrator.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-52860441724860966212009-07-27T09:47:47.362-07:002009-07-27T09:47:47.362-07:00...I meant to mention flapjax (javascript) as a gr......I meant to mention flapjax (javascript) as a great example that includes event stream handling a la System.Reactive and also the type of expression binding in BindableLinq that encompasses more spreadsheet-like behavior. <br /><br />http://en.wikipedia.org/wiki/Flapjax<br /><br />http://www.flapjax-lang.org/Pete O'Toolehttps://www.blogger.com/profile/13761623962278981833noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-9918340022610559672009-07-27T09:43:47.626-07:002009-07-27T09:43:47.626-07:00The open source libraries mentioned provide exactl...The open source libraries mentioned provide exactly the functionality I would have expected a functional reactive library to provide. <br /><br />Jafar, is Reactive Linq expected to go to this far? There is a great example on the bindable linq page:<br /><br />"As well as propogating change, Bindable LINQ can analyse your queries at runtime and detect any dependencies your query has. If these dependencies provide events to subscribe to, Bindable LINQ will automatically monitor them for change." (http://www.codeplex.com/bindablelinq)<br /><br />I am not criticizing the start you guys have made in working against event streams, but just binding to an expression (LINQ query) and having update/recalculation handled automatically is the real beauty of FRP. I hope the Reactive library supports this eventually. (Right now it looks like a slightly nicer event handling mechanism... with true FRP the change notification events are transparent.)Pete O'Toolehttps://www.blogger.com/profile/13761623962278981833noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-36799462966308663492009-07-27T06:29:37.342-07:002009-07-27T06:29:37.342-07:00This is some great new functionality, although som...This is some great new functionality, although some libraries are doing parts of this already (in addition to the ones mentioned above, there's also CLinq(http://clinq.codeplex.com/)). When can we expect the WPF version to be released?Davidnoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-66731802167943845912009-07-27T05:10:58.916-07:002009-07-27T05:10:58.916-07:00@pete, sorry, I was in a hurry. the names are Obti...@pete, sorry, I was in a hurry. the names are Obtics:<br />http://www.codeplex.com/Obtics<br />and Bindable Linq:<br />http://www.codeplex.com/bindablelinqashmindhttps://www.blogger.com/profile/08418352173841750649noreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-51979384409281668812009-07-26T23:08:03.663-07:002009-07-26T23:08:03.663-07:00This comment has been removed by a blog administrator.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3761674922653685009.post-34887868334843556952009-07-25T20:21:36.883-07:002009-07-25T20:21:36.883-07:00A C# version of an the good old unix pipeline. Pu...A C# version of an the good old unix pipeline. Pull from stdin(enumerable) push to stdout/stderr(observable) yet each command runs as separate process (thread) consuming and processing input as available.Kurt Harrigerhttps://www.blogger.com/profile/01952894284861190017noreply@blogger.com