<span class="hljs-operator">>=</span> <span class="hljs-operator"><=</span> <span class="hljs-operator"><></span> <span class="hljs-operator">></span> <span class="hljs-operator"><</span> <span class="hljs-operator">=</span> <span class="hljs-operator">+</span> <span class="hljs-operator">-</span> <span class="hljs-operator">*</span> <span class="hljs-operator">/</span> <span class="hljs-operator">%</span>
<span class="hljs-operator">>=?</span> <span class="hljs-operator"><=?</span> <span class="hljs-operator"><>?</span> <span class="hljs-operator">>?</span> <span class="hljs-operator"><?</span> <span class="hljs-operator">=?</span> <span class="hljs-operator">+?</span> <span class="hljs-operator">-?</span> <span class="hljs-operator">*?</span> <span class="hljs-operator">/?</span> <span class="hljs-operator">%?</span>
<span class="hljs-operator">?>=?</span> <span class="hljs-operator">?<=?</span> <span class="hljs-operator">?<>?</span> <span class="hljs-operator">?>?</span> <span class="hljs-operator">?<?</span> <span class="hljs-operator">?=?</span> <span class="hljs-operator">?+?</span> <span class="hljs-operator">?-?</span> <span class="hljs-operator">?*?</span> <span class="hljs-operator">?/?</span> <span class="hljs-operator">?%?</span>
<span class="hljs-operator">?>=</span> <span class="hljs-operator">?<=</span> <span class="hljs-operator">?<></span> <span class="hljs-operator">?></span> <span class="hljs-operator">?<</span> <span class="hljs-operator">?=</span> <span class="hljs-operator">?+</span> <span class="hljs-operator">?-</span> <span class="hljs-operator">?*</span> <span class="hljs-operator">?/</span> <span class="hljs-operator">?%</span>
<span class="hljs-operator">**</span>
<span class="hljs-operator"><-</span> <span class="hljs-operator">-></span>
<span class="hljs-operator">..</span>
<span class="hljs-operator">::</span>
<span class="hljs-operator">:></span> <span class="hljs-operator">:?</span> <span class="hljs-operator">:?></span>
<span class="hljs-operator"><<</span> <span class="hljs-operator">>></span>
<span class="hljs-operator"><<<</span> <span class="hljs-operator">>>></span> <span class="hljs-operator">~~~</span> <span class="hljs-operator">^^^</span> <span class="hljs-operator">&&&</span> <span class="hljs-operator">|||</span>
<span class="hljs-operator">|</span> <span class="hljs-operator">||</span>
<span class="hljs-operator"><|</span> <span class="hljs-operator"><||</span> <span class="hljs-operator"><|||</span>
<span class="hljs-operator">|></span> <span class="hljs-operator">||></span> <span class="hljs-operator">|||></span>
<span class="hljs-operator">~~</span> <span class="hljs-operator">~-</span> <span class="hljs-operator">~+</span>
<span class="hljs-operator">?</span> <span class="hljs-operator">^</span> <span class="hljs-operator">!</span>
<span class="hljs-operator">!=</span> <span class="hljs-operator">==</span>
<span class="hljs-operator">&</span> <span class="hljs-operator">&&</span>
<span class="hljs-keyword">let</span> array <span class="hljs-operator">=</span> [<span class="hljs-operator">|</span> <span class="hljs-number">0</span> <span class="hljs-operator">|</span>]
<span class="hljs-keyword">let</span> anonymousRecord <span class="hljs-operator">=</span> {<span class="hljs-operator">|</span> x <span class="hljs-operator">=</span> <span class="hljs-number">42</span> <span class="hljs-operator">|</span>}
<span class="hljs-keyword">let</span> range <span class="hljs-operator">=</span> [ <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-number">0.</span><span class="hljs-number">.10</span> <span class="hljs-operator">-></span> i ]
<span class="hljs-comment">// Custom operators</span>
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator">+?</span>) (x<span class="hljs-operator">:</span> <span class="hljs-type">int</span>) (y<span class="hljs-operator">:</span> <span class="hljs-type">int</span>) <span class="hljs-operator">=</span> x <span class="hljs-operator">+</span> <span class="hljs-number">2</span><span class="hljs-operator">*</span>y
<span class="hljs-built_in">printf</span> <span class="hljs-string">"%d"</span> (<span class="hljs-number">10</span> <span class="hljs-operator">+?</span> <span class="hljs-number">1</span>)
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator"><!></span>) (f<span class="hljs-operator">:</span> <span class="hljs-symbol">'T</span><span class="hljs-operator">-></span><span class="hljs-symbol">'U</span>) (x<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Functor<'T>``</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Functor<'U>``</span> <span class="hljs-operator">=</span> Map.Invoke f x
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator"><<|</span>) (f<span class="hljs-operator">:</span> <span class="hljs-symbol">'T</span><span class="hljs-operator">-></span><span class="hljs-symbol">'U</span>) (x<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Functor<'T>``</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Functor<'U>``</span> <span class="hljs-operator">=</span> Map.Invoke f x
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator">|>></span>) (x<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Functor<'T>``</span>) (f<span class="hljs-operator">:</span> <span class="hljs-symbol">'T</span><span class="hljs-operator">-></span><span class="hljs-symbol">'U</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Functor<'U>``</span> <span class="hljs-operator">=</span> Map.Invoke f x
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator"><*></span>) (f<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'T -> 'U>``</span>) (x<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'T>``</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'U>``</span> <span class="hljs-operator">=</span> Apply.Invoke f x
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> ( <span class="hljs-operator">*></span>) (x<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'T>``</span>) (y<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'U>``</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'U>``</span> <span class="hljs-operator">=</span> ((<span class="hljs-keyword">fun</span> (_<span class="hljs-operator">:</span> <span class="hljs-symbol">'T</span>) (k<span class="hljs-operator">:</span> <span class="hljs-symbol">'U</span>) <span class="hljs-operator">-></span> k) <span class="hljs-operator"><!></span> x <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'U->'U>``</span>) <span class="hljs-operator"><*></span> y
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator"><*</span> ) (x<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'U>``</span>) (y<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'T>``</span>)<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'U>``</span> <span class="hljs-operator">=</span> ((<span class="hljs-keyword">fun</span> (k<span class="hljs-operator">:</span> <span class="hljs-symbol">'U</span>) (_<span class="hljs-operator">:</span> <span class="hljs-symbol">'T</span>) <span class="hljs-operator">-></span> k ) <span class="hljs-operator"><!></span> x <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'T->'U>``</span>) <span class="hljs-operator"><*></span> y
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator"><**></span>) (x<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'T>``</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Applicative<'T -> 'U>``</span><span class="hljs-operator">-></span><span class="hljs-symbol">'``Applicative<'U>``</span> <span class="hljs-operator">=</span> flip (<span class="hljs-operator"><*></span>) x
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator">>>=</span>) (x<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Monad<'T>``</span>) (f<span class="hljs-operator">:</span> <span class="hljs-symbol">'T</span><span class="hljs-operator">-></span><span class="hljs-symbol">'``Monad<'U>``</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Monad<'U>``</span> <span class="hljs-operator">=</span> Bind.Invoke x f
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator">=<<</span>) (f<span class="hljs-operator">:</span> <span class="hljs-symbol">'T</span><span class="hljs-operator">-></span><span class="hljs-symbol">'``Monad<'U>``</span>) (x<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Monad<'T>``</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Monad<'U>``</span> <span class="hljs-operator">=</span> Bind.Invoke x f
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator">>=></span>) (f<span class="hljs-operator">:</span> <span class="hljs-symbol">'T</span><span class="hljs-operator">-></span><span class="hljs-symbol">'``Monad<'U>``</span>) (g<span class="hljs-operator">:</span> <span class="hljs-symbol">'U</span><span class="hljs-operator">-></span><span class="hljs-symbol">'``Monad<'V>``</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'T</span> <span class="hljs-operator">-></span> <span class="hljs-symbol">'``Monad<'V>``</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">fun</span> x <span class="hljs-operator">-></span> Bind.Invoke (f x) g
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator"><=<</span>) (g<span class="hljs-operator">:</span> <span class="hljs-symbol">'b</span><span class="hljs-operator">-></span><span class="hljs-symbol">'``Monad<'V>``</span>) (f<span class="hljs-operator">:</span> <span class="hljs-symbol">'T</span><span class="hljs-operator">-></span><span class="hljs-symbol">'``Monad<'U>``</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'T</span> <span class="hljs-operator">-></span> <span class="hljs-symbol">'``Monad<'V>``</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">fun</span> x <span class="hljs-operator">-></span> Bind.Invoke (f x) g
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator">++</span>) (x<span class="hljs-operator">:</span> <span class="hljs-symbol">'Monoid</span>) (y<span class="hljs-operator">:</span> <span class="hljs-symbol">'Monoid</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'Monoid</span> <span class="hljs-operator">=</span> Plus.Invoke x y
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator"><|></span>) (x<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Functor<'T>``</span>) (y<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Functor<'T>``</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Functor<'T>``</span> <span class="hljs-operator">=</span> Append.Invoke x y
<span class="hljs-keyword">let</span> <span class="hljs-keyword">inline</span> (<span class="hljs-operator">=>></span>) (s<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Comonad<'T>``</span>) (g<span class="hljs-operator">:</span> <span class="hljs-symbol">'``Comonad<'T>``</span><span class="hljs-operator">-></span><span class="hljs-symbol">'U</span>) <span class="hljs-operator">:</span> <span class="hljs-symbol">'``Comonad<'U>``</span> <span class="hljs-operator">=</span> Extend.Invoke g s
<span class="hljs-comment">// Code quotation</span>
<span class="hljs-keyword">open</span> Microsoft.FSharp.Quotations
<span class="hljs-comment">// A typed code quotation.</span>
<span class="hljs-keyword">let</span> expr <span class="hljs-operator">:</span> Expr<span class="hljs-operator"><</span><span class="hljs-type">int</span><span class="hljs-operator">></span> <span class="hljs-operator">=</span> <span class="hljs-operator"><@</span> <span class="hljs-number">1</span> <span class="hljs-operator">+</span> <span class="hljs-number">1</span> <span class="hljs-operator">@></span>
<span class="hljs-comment">// An untyped code quotation.</span>
<span class="hljs-keyword">let</span> expr2 <span class="hljs-operator">:</span> Expr <span class="hljs-operator">=</span> <span class="hljs-operator"><@@</span> <span class="hljs-number">1</span> <span class="hljs-operator">+</span> <span class="hljs-number">1</span> <span class="hljs-operator">@@></span>
<span class="hljs-comment">// Active patterns</span>
<span class="hljs-keyword">let</span> (<span class="hljs-operator">|</span>Integer<span class="hljs-operator">|</span>_<span class="hljs-operator">|</span>) (str<span class="hljs-operator">:</span> <span class="hljs-type">string</span>) <span class="hljs-operator">=</span>
<span class="hljs-keyword">let</span> <span class="hljs-keyword">mutable</span> intvalue <span class="hljs-operator">=</span> <span class="hljs-number">0</span>
<span class="hljs-keyword">if</span> System.Int32.TryParse(str, <span class="hljs-operator">&</span>intvalue) <span class="hljs-keyword">then</span> <span class="hljs-literal">Some</span>(intvalue)
<span class="hljs-keyword">else</span> <span class="hljs-literal">None</span>
<span class="hljs-keyword">let</span> (<span class="hljs-operator">|</span>Even<span class="hljs-operator">|</span>Odd<span class="hljs-operator">|</span>) input <span class="hljs-operator">=</span> <span class="hljs-keyword">if</span> input <span class="hljs-operator">%</span> <span class="hljs-number">2</span> <span class="hljs-operator">=</span> <span class="hljs-number">0</span> <span class="hljs-keyword">then</span> Even <span class="hljs-keyword">else</span> Odd
<span class="hljs-comment">//</span>