<span class="hljs-meta">#r</span> <span class="hljs-string">"nuget: Ply"</span>
<span class="hljs-keyword">open</span> FSharp.Control.Tasks
<span class="hljs-keyword">open</span> System.Threading.Tasks
<span class="hljs-comment">// Single line, and contains a capital letter</span>
<span class="hljs-keyword">let</span> unitTask <span class="hljs-operator">=</span> <span class="hljs-keyword">unitTask</span> { <span class="hljs-keyword">return</span> () }
<span class="hljs-keyword">let</span> work <span class="hljs-operator">=</span>
<span class="hljs-keyword">async</span> {
<span class="hljs-keyword">let</span> delayTask () <span class="hljs-operator">=</span>
<span class="hljs-comment">// Nested computation</span>
<span class="hljs-keyword">task</span> {
<span class="hljs-built_in">printfn</span> <span class="hljs-string">"Delay..."</span>
<span class="hljs-keyword">do!</span> Task.Delay <span class="hljs-number">1000</span>
<span class="hljs-keyword">return</span> <span class="hljs-number">42</span>
}
<span class="hljs-keyword">let!</span> result <span class="hljs-operator">=</span> delayTask () <span class="hljs-operator">|></span> Async.AwaitTask
<span class="hljs-built_in">printfn</span> <span class="hljs-string">"Async F# sleep..."</span>
<span class="hljs-keyword">do!</span> Async.Sleep <span class="hljs-number">1000</span>
<span class="hljs-keyword">return</span> result
}
<span class="hljs-keyword">let</span> result <span class="hljs-operator">=</span> work <span class="hljs-operator">|></span> Async.RunSynchronously