title: What's the easiest way to do something like delegate multicast in F#
body: <p>Currently I use this and it works fine:</p>
  
  <pre><code>let mutable notify = fun x -&gt; x
  let wrap f i = f(i); i
  
  let a x = printf "%A" x
  notify &lt;- notify &gt;&gt; (wrap a)
  
  notify "ss"
  </code></pre>
  
  <p>Are there any other better approach?</p>
  
  <p>and why this doesn't work?</p>
  
  <pre><code>let mutable notify = fun x -&gt; x
  let wrap f i = f(i); i
  
  let a x = printf "%A" x  
  let d x =
      (notify &gt;&gt; (wrap a)) x
  notify &lt;- d
  
  notify "ss"
  </code></pre>
  
  <p>I am not sure why the first example doesn't trigger endless loop, but the second does.</p>
  
  <p>It seems mutable function variable (point free function) has different behaviour than I expected. Where can I learn more from regarding this topic?</p>