title: Do F# observable events obviate, mediate, or are not related to the need for weak references?
body: <p>Since observables are typically <code>IDisposable</code> how does that change, if at all, the need to use weak references in event handlers, or any other event based memory leak/GC locked referencing?</p>
  
  <p>While my primary concern/need is for WPF I'm looking for the broader example and trying to understand where I may need weak references.</p>
  
  <p>F#'s <code>Observable.add</code> doesn't provide a way to unhook the event, so I'm thinking it's less likely to be a source of leaks.
  Sample code:</p>
  
  <pre><code>type Notifier() = 
      let propChanged = new Event&lt;_,_&gt;()
      member __.Foo() = ()
      interface INotifyPropertyChanged with
          [&lt;CLIEvent&gt;]
          member __.PropertyChanged = propChanged.Publish
      abstract member RaisePropertyChanged : string -&gt; unit
      default x.RaisePropertyChanged(propertyName : string) = propChanged.Trigger(x, PropertyChangedEventArgs(propertyName))
  
  
  Notifier() :?&gt; INotifyPropertyChanged
  |&gt; Observable.add(fun _ -&gt; printfn "I'm hooked on you")
  </code></pre>