<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>F# on My Notes</title><link>https://harryho.github.io/coding/f-sharp/</link><description>Recent content in F# on My Notes</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://harryho.github.io/coding/f-sharp/index.xml" rel="self" type="application/rss+xml"/><item><title>Overview</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-1/</guid><description>&lt;h2 id="f"&gt;F&lt;code&gt;#&lt;/code&gt;&lt;a class="anchor" href="#f"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;F# is an open-source, cross-platform, interoperable programming language for writing succinct, robust and performant code. Your focus remains on your problem domain, rather than the details of programming.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h3 id="organizing-f-code"&gt;Organizing F# Code&lt;a class="anchor" href="#organizing-f-code"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The following table shows reference articles related to organizing your F# code.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Title&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Namespaces&lt;/td&gt;
					&lt;td&gt;Learn about namespace support in F#. A namespace lets you organize code into areas of related functionality by enabling you to attach a name to a grouping of program elements.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Modules&lt;/td&gt;
					&lt;td&gt;Learn about modules. An F# module is like a namespace and can also include values and functions. Grouping code in modules helps keep related code together and helps avoid name conflicts in your program.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;open Declarations&lt;/td&gt;
					&lt;td&gt;Learn about how open works. An open declaration specifies a module, namespace, or type whose elements you can reference without using a fully qualified name.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Signatures&lt;/td&gt;
					&lt;td&gt;Learn about signatures and signature files. A signature file contains information about the public signatures of a set of F# program elements, such as types, namespaces, and modules. It can be used to specify the accessibility of these program elements.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Access Control&lt;/td&gt;
					&lt;td&gt;Learn about access control in F#. Access control means declaring what clients are able to use certain program elements, such as types, methods, functions, and so on.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;XML Documentation&lt;/td&gt;
					&lt;td&gt;Learn about support for generating documentation files for XML doc comments, also known as triple slash comments. You can produce documentation from code comments in F# as in other .NET languages.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="literals-and-strings"&gt;Literals and Strings&lt;a class="anchor" href="#literals-and-strings"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The following table shows reference articles that describe literals and strings in F#.&lt;/p&gt;</description></item><item><title>Functions</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-3/</guid><description>&lt;h2 id="f-function"&gt;F# Function&lt;a class="anchor" href="#f-function"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;Functions are the fundamental unit of program execution in any programming language. As in other languages, an F# function has a name, can have parameters and take arguments, and has a body. F# also supports functional programming constructs such as treating functions as values, using unnamed functions in expressions, composition of functions to form new functions, curried functions, and the implicit definition of functions by way of the partial application of function arguments.&lt;/p&gt;</description></item><item><title>C.U.R.S.</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-4/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-4/</guid><description>&lt;h2 id="class"&gt;Class&lt;a class="anchor" href="#class"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Classes are types that represent objects that can have properties, methods, and events.&lt;/p&gt;
&lt;h3 id="syntax"&gt;Syntax&lt;a class="anchor" href="#syntax"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// Class definition:
type [access-modifier] type-name [type-params] [access-modifier] ( parameter-list ) [ as identifier ] =
[ class ]
[ inherit base-type-name(base-constructor-args) ]
[ let-bindings ]
[ do-bindings ]
member-list
...
[ end ]
// Mutually recursive class definitions:
type [access-modifier] type-name1 ...
and [access-modifier] type-name2 ...
...&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="constructors"&gt;Constructors&lt;a class="anchor" href="#constructors"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The constructor is code that creates an instance of the class type. In an F# class, there is always a primary constructor whose arguments are described in the parameter-list that follows the type name, and whose body consists of the let (and let rec) bindings at the start of the class declaration and the do bindings that follow. The arguments of the primary constructor are in scope throughout the class declaration.&lt;/p&gt;</description></item><item><title>Collections 1</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-5/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-5/</guid><description>&lt;h2 id="array"&gt;Array&lt;a class="anchor" href="#array"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Arrays are fixed-size, zero-based, mutable collections of consecutive data elements that are all of the same type.&lt;/p&gt;
&lt;h3 id="create-array"&gt;Create array&lt;a class="anchor" href="#create-array"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;array1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 2&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 3 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Put each element on a separate line, in which case the semicolon separator is optional.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;array1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The type of the array elements is inferred from the literals used and must be consistent. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The following code causes an error because 1.0 is a float and 2 and 3 are integers.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Causes an error.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// let array2 = [| 1.0; 2; 3 |]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Use sequence expressions to create arrays.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;array3&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; i &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; i &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; i &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// use Array.zeroCreate
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;arrayOfTenZeroes&lt;/span&gt; &lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int array &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;zeroCreate 10
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// use Array.empty
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;myEmptyArray&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;empty
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Length of empty array: %d&amp;#34;&lt;/span&gt; myEmptyArray&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;Length
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Length of empty array: 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// use Array.create
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Array of floats set to 5.0: %A&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;create 10 5&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Area of floats set to 5.0: [|5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0|]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Array.init
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Array of squares: %A&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;init 10 &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; index &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; index &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; index&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; Array &lt;span style="color:#cf222e"&gt;of&lt;/span&gt; squares&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 4&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 9&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 16&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 25&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 36&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 49&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 64&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 81&lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="copy"&gt;Copy&lt;a class="anchor" href="#copy"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;open&lt;/span&gt; &lt;span style="color:#24292e"&gt;System.Text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;firstArray&lt;/span&gt; &lt;span style="color:#0550ae"&gt;:&lt;/span&gt; StringBuilder array &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;init 3 &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; index &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;new&lt;/span&gt; StringBuilder&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;secondArray&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;copy firstArray
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Reset an element of the first array to a new value.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;firstArray&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color:#cf222e"&gt;new&lt;/span&gt; StringBuilder&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;Test1&amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Change an element of the first array.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;firstArray&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;].&lt;/span&gt;Insert&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; &lt;span style="color:#0a3069"&gt;&amp;#34;Test2&amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; ignore
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; firstArray
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; secondArray
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// [|Test1; Test2; |]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|;&lt;/span&gt; Test2&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="access"&gt;Access&lt;a class="anchor" href="#access"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Accesses elements from 0 to 2.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;array1&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;2&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Accesses elements from the beginning of the array to 2.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;array1&lt;span style="color:#0550ae"&gt;[..&lt;/span&gt;2&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Accesses elements from 2 to the end of the array.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;array1&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;2&lt;span style="color:#0550ae"&gt;..]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="functions"&gt;Functions&lt;a class="anchor" href="#functions"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Array.sub 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;a1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 0 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 99 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;a2&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;sub a1 5 10
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; a2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// [|5; 6; 7; 8; 9; 10; 11; 12; 13; 14|]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Array.append creates a new array by combining two existing arrays.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;append &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 2&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 3&lt;span style="color:#0550ae"&gt;|]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 4&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 5&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 6&lt;span style="color:#0550ae"&gt;|])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// [|1; 2; 3; 4; 5; 6|]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Array.choose selects elements of an array to include in a new array. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;choose &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;%&lt;/span&gt; 2 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 0 &lt;span style="color:#cf222e"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;float&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;elem&lt;span style="color:#0550ae"&gt;*&lt;/span&gt;elem &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; None&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;|])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// [|3.0; 15.0; 35.0; 63.0; 99.0|]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Array.collect runs a specified function on each array element of an existing array and then collects the elements generated by the function and combines them into a new array. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;collect &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 0 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;|])&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 5&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 10&lt;span style="color:#0550ae"&gt;|])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// [|0; 1; 0; 1; 2; 3; 4; 5; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10|]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;concat takes a sequence &lt;span style="color:#cf222e"&gt;of&lt;/span&gt; arrays &lt;span style="color:#0550ae"&gt;and&lt;/span&gt; combines them into a &lt;span style="color:#cf222e"&gt;single&lt;/span&gt; array&lt;span style="color:#0550ae"&gt;.&lt;/span&gt; The following code demonstrates &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;concat&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;F&lt;span style="color:#0550ae"&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Copy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;concat &lt;span style="color:#0550ae"&gt;[&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;|]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt;4&lt;span style="color:#0550ae"&gt;|]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;//output [|0; 1; 2; 3; 4|]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;concat &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;|]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt;4&lt;span style="color:#0550ae"&gt;|]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;//output [|0; 1; 2; 3; 4|]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Array.filter takes a Boolean condition function and generates a new array that contains only those elements from the input array for which the condition is true.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;filter &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;%&lt;/span&gt; 2 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10&lt;span style="color:#0550ae"&gt;|])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// [|2; 4; 6; 8; 10|]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Array.rev generates a new array by reversing the order of an existing array. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;stringReverse&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;s&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; &lt;span style="color:#cf222e"&gt;string&lt;/span&gt;&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#24292e"&gt;System&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;String&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;rev &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;s&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;ToCharArray&lt;span style="color:#6a737d"&gt;()&lt;/span&gt;&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;stringReverse&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;!dlrow olleH&amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The output 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// &amp;#34;Hello world!&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// You can easily combine functions in the array module that transform arrays by using the pipeline operator (|&amp;gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;filter &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;%&lt;/span&gt; 2 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;choose &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;elem &lt;span style="color:#0550ae"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 8&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;then&lt;/span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;elem&lt;span style="color:#0550ae"&gt;*&lt;/span&gt;elem&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;else&lt;/span&gt; None&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;rev
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt;100&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 36&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 16&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 4&lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="multidimensional-arrays"&gt;Multidimensional arrays&lt;a class="anchor" href="#multidimensional-arrays"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;my2DArray&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; array2D &lt;span style="color:#0550ae"&gt;[&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;];&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;arrayOfArrays&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0 &lt;span style="color:#0550ae"&gt;|];&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;twoDimensionalArray&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array2D&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;init 2 2 &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; i j &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; arrayOfArrays&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;i&lt;span style="color:#0550ae"&gt;][&lt;/span&gt;j&lt;span style="color:#0550ae"&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="slicing"&gt;Slicing&lt;a class="anchor" href="#slicing"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Get rows 1 to N from an NxM matrix (returns a matrix):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;matrix&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;..,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;*]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Get rows 1 to 3 from a matrix (returns a matrix):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;matrix&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;*]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Get columns 1 to 3 from a matrix (returns a matrix):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;matrix&lt;span style="color:#0550ae"&gt;[*,&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Get a 3x3 submatrix:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;matrix&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Get row 3 from a matrix as a vector:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;matrix&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;*]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Get column 3 from a matrix as a vector:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;matrix&lt;span style="color:#0550ae"&gt;[*,&lt;/span&gt; 3&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="matrix--slicing"&gt;Matrix &amp;amp; slicing&lt;a class="anchor" href="#matrix--slicing"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;type&lt;/span&gt; &lt;span style="color:#1f2328"&gt;Matrix&lt;/span&gt;&lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;&amp;#39;&lt;/span&gt;T&lt;span style="color:#0550ae"&gt;&amp;gt;(&lt;/span&gt;N&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; M&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;internalArray&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array2D&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;zeroCreate&lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;&amp;#39;&lt;/span&gt;T&lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; N M
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;member&lt;/span&gt; this&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#6639ba"&gt;Item&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;with&lt;/span&gt; get&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;a&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; b&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; internalArray&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;a&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; b&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;and&lt;/span&gt; set&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;a&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; b&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;value&lt;span style="color:#0550ae"&gt;:&lt;/span&gt;&lt;span style="color:#cf222e"&gt;&amp;#39;&lt;/span&gt;T&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; internalArray&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;a&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; b&lt;span style="color:#0550ae"&gt;]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;&amp;lt;-&lt;/span&gt; value
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;member&lt;/span&gt; this&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#6639ba"&gt;GetSlice&lt;/span&gt;&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;rowStart&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int option&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; rowFinish &lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int option&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; colStart&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int option&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; colFinish &lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int option&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;rowStart&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; rowStart &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;v&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; None &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;rowFinish&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; rowFinish &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;v&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; None &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; internalArray&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;GetLength&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;colStart&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; colStart &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;v&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; None &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;colFinish&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; colFinish &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;v&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; None &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; internalArray&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;GetLength&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; internalArray&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;rowStart&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;rowFinish&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; colStart&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;colFinish&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;member&lt;/span&gt; this&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#6639ba"&gt;GetSlice&lt;/span&gt;&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;row&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; colStart&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int option&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; colFinish&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int option&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;colStart&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; colStart &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;v&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; None &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;colFinish&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; colFinish &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;v&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; None &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; internalArray&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;GetLength&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; internalArray&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;row&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; colStart&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;colFinish&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;member&lt;/span&gt; this&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#6639ba"&gt;GetSlice&lt;/span&gt;&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;rowStart&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int option&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; rowFinish&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int option&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; col&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;rowStart&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; rowStart &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;v&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; None &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;rowFinish&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; rowFinish &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;v&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; v
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; None &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; internalArray&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;GetLength&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; internalArray&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;rowStart&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;rowFinish&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; col&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;module&lt;/span&gt; &lt;span style="color:#24292e"&gt;test&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;generateTestMatrix&lt;/span&gt; x y &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;matrix&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#cf222e"&gt;new&lt;/span&gt; Matrix&lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;float&lt;/span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;(&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 3&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; i &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;2 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; j &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;2 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; matrix&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;i&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; j&lt;span style="color:#0550ae"&gt;]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;&amp;lt;-&lt;/span&gt; &lt;span style="color:#cf222e"&gt;float&lt;/span&gt;&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;i&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; x &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; &lt;span style="color:#cf222e"&gt;float&lt;/span&gt;&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;j&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; y
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; matrix
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;test1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; generateTestMatrix 2&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;3 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;submatrix&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; test1&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; printfn &lt;span style="color:#0550ae"&gt;$&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;{submatrix}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;firstRow&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; test1&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;,*]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;secondRow&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; test1&lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;,*]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;firstCol&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; test1&lt;span style="color:#0550ae"&gt;[*,&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; printfn &lt;span style="color:#0550ae"&gt;$&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;{firstCol}&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="search"&gt;Search&lt;a class="anchor" href="#search"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Array.find takes a Boolean function and returns the first element for which 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// the function returns true, or raises a 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// System.Collections.Generic.KeyNotFoundException if no element that satisfies
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// the conditionis found. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Array.findIndex is like Array.find, except that it returns the index of 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// the element instead of the element itself.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The following code uses Array.find and Array.findIndex to locate a number that 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// is both a perfect square and perfect cube.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;arrayA&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 2 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 100 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;delta&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0e&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;10
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;isPerfectSquare&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;x&lt;span style="color:#0550ae"&gt;:&lt;/span&gt;int&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;y&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; sqrt &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;float&lt;/span&gt; x&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; abs&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;y &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; round y&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt; delta
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;isPerfectCube&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;x&lt;span style="color:#0550ae"&gt;:&lt;/span&gt;int&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;y&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;System&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#24292e"&gt;Math&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Pow&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;float&lt;/span&gt; x&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; abs&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;y &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; round y&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt; delta
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;element&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;find &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; isPerfectSquare elem &lt;span style="color:#0550ae"&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPerfectCube elem&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; arrayA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;index&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;findIndex &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; isPerfectSquare elem &lt;span style="color:#0550ae"&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPerfectCube elem&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; arrayA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;The first element that is both a square and a cube is %d and its index is %d.&amp;#34;&lt;/span&gt; element index
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The output is as follows.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The first element that is both a square and a cube is 64 and its index is 62.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// ----------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Array.tryFind is like Array.find, except that its result is an option type, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// and it returns None if no element is found. Array.tryFind should be used 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// instead of Array.find when you do not know whether a matching element is 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// in the array. Similarly, Array.tryFindIndex is like Array.findIndex except 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// that the option type is the return value. If no element is found, the option is None.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;delta&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0e&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;10
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;isPerfectSquare&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;x&lt;span style="color:#0550ae"&gt;:&lt;/span&gt;int&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;y&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; sqrt &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;float&lt;/span&gt; x&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; abs&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;y &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; round y&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt; delta
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;isPerfectCube&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;x&lt;span style="color:#0550ae"&gt;:&lt;/span&gt;int&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;y&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;System&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#24292e"&gt;Math&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Pow&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;float&lt;/span&gt; x&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; abs&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;y &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; round y&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt; delta
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;lookForCubeAndSquare&lt;/span&gt; array1 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;result&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;tryFind &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; isPerfectSquare elem &lt;span style="color:#0550ae"&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPerfectCube elem&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; array1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; result &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Some x &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Found an element: %d&amp;#34;&lt;/span&gt; x
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; None &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Failed to find a matching element.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lookForCubeAndSquare &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lookForCubeAndSquare &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 100 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 1000 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lookForCubeAndSquare &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 2 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 50 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The output is as follows.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Found an element: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Found an element: 729
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Failed to find a matching element.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// ----------------------------------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Use Array.tryPick when you need to transform an element in addition to finding it. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The result is the first element for which the function returns the transformed 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// element as an option value, or None if no such element is found.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The following code shows the use of Array.tryPick. In this case, instead of
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// a lambda expression, several local helper functions are defined to simplify the code.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;findPerfectSquareAndCube&lt;/span&gt; array1 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;delta&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0e&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;10
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;isPerfectSquare&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;x&lt;span style="color:#0550ae"&gt;:&lt;/span&gt;int&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;y&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; sqrt &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;float&lt;/span&gt; x&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; abs&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;y &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; round y&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt; delta
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;isPerfectCube&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;x&lt;span style="color:#0550ae"&gt;:&lt;/span&gt;int&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;y&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;System&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#24292e"&gt;Math&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Pow&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;float&lt;/span&gt; x&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; abs&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;y &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; round y&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt; delta
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;// intFunction : (float -&amp;gt; float) -&amp;gt; int -&amp;gt; int
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;// Allows the use of a floating point function with integers.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;intFunction&lt;/span&gt; function1 number &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; int &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;round &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;function1 &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;float&lt;/span&gt; number&lt;span style="color:#0550ae"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;cubeRoot&lt;/span&gt; x &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;System&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#24292e"&gt;Math&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Pow&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;x&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;// testElement: int -&amp;gt; (int * int * int) option
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;// Test an element to see whether it is a perfect square and a perfect
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;// cube, and, if so, return the element, square root, and cube root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;// as an option value. Otherwise, return None.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;testElement&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; isPerfectSquare elem &lt;span style="color:#0550ae"&gt;&amp;amp;&amp;amp;&lt;/span&gt; isPerfectCube elem &lt;span style="color:#cf222e"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;elem&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; intFunction sqrt elem&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; intFunction cubeRoot elem&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;else&lt;/span&gt; None
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;tryPick testElement array1 &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Some &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;n&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; sqrt&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; cuberoot&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Found an element %d with square root %d and cube root %d.&amp;#34;&lt;/span&gt; n sqrt cuberoot
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; None &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Did not find an element that is both a perfect square and a perfect cube.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;findPerfectSquareAndCube &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;findPerfectSquareAndCube &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 2 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 100 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;findPerfectSquareAndCube &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 100 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 1000 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;findPerfectSquareAndCube &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1000 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10000 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;findPerfectSquareAndCube &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 2 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 50 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The output is as follows.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Found an element 1 with square root 1 and cube root 1.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Found an element 64 with square root 8 and cube root 4.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Found an element 729 with square root 27 and cube root 9.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Found an element 4096 with square root 64 and cube root 16.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; Did &lt;span style="color:#0550ae"&gt;not&lt;/span&gt; find an element that is both a perfect square &lt;span style="color:#0550ae"&gt;and&lt;/span&gt; a perfect cube&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="modify-arrays"&gt;Modify arrays&lt;a class="anchor" href="#modify-arrays"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Array.set sets an element to a specified value. Array.fill sets a range of elements in an array to a specified value. The following code provides an example of Array.fill.&lt;/p&gt;</description></item><item><title>Collections 2</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-6/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-6/</guid><description>&lt;h2 id="list"&gt;List&lt;a class="anchor" href="#list"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A list in F# is an ordered, immutable series of elements of the same type. To perform basic operations on lists, use the functions in the List module.&lt;/p&gt;
&lt;h3 id="creating--appending"&gt;Creating &amp;amp; appending&lt;a class="anchor" href="#creating--appending"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Creating and Initializing Lists&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// --- creating ---
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;list123&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 2&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 3 &lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// You can also put line breaks between elements, in which case the semicolons are optional. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;list123&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 3 &lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Normally, all list elements must be the same type. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// An exception is that a list in which the elements are specified to be a base type
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// can have elements that are derived types. Thus the following is acceptable, 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// because both Button and CheckBox derive from Control.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;myControlList&lt;/span&gt; &lt;span style="color:#0550ae"&gt;:&lt;/span&gt; Control &lt;span style="color:#cf222e"&gt;list&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt; &lt;span style="color:#cf222e"&gt;new&lt;/span&gt; Button&lt;span style="color:#6a737d"&gt;()&lt;/span&gt;&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;new&lt;/span&gt; CheckBox&lt;span style="color:#6a737d"&gt;()&lt;/span&gt; &lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// using a range indicated by integers separated by the range operator (..)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;list1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// An empty list.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;listEmpty&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#6a737d"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// use a sequence expression to create a list.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;listOfSquares&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; i &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; i&lt;span style="color:#0550ae"&gt;*&lt;/span&gt;i &lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// ---- appending -------
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// You can attach elements to a list by using the :: (cons) operator. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// If list1 is [2; 3; 4], the following code creates list2 as [100; 2; 3; 4].
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;list2&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 100 &lt;span style="color:#0550ae"&gt;::&lt;/span&gt; list1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// You can concatenate lists that have compatible types by using the @ operator, as in the following code. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// If list1 is [2; 3; 4] and list2 is [100; 2; 3; 4], this code creates list3 as [2; 3; 4; 100; 2; 3; 4].
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;list3&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; list1 &lt;span style="color:#0550ae"&gt;@&lt;/span&gt; list2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="properties"&gt;Properties&lt;a class="anchor" href="#properties"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The list type supports the following properties:&lt;/p&gt;</description></item><item><title>Collections 3</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-7/</guid><description>&lt;h2 id="seq"&gt;Seq&lt;a class="anchor" href="#seq"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A sequence is a logical series of elements all of one type. Sequences are particularly useful when you have a large, ordered collection of data but do not necessarily expect to use all of the elements. Individual sequence elements are computed only as required, so a sequence can provide better performance than a list in situations in which not all the elements are used.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Sequence that has an increment.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; 0 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 100 &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// uses the -&amp;gt; operator, which allows you to specify an expression 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// whose value will become a part of the sequence. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; i &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; i &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; i &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// specify the do keyword, with an optional yield that follows:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; i &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt; &lt;span style="color:#cf222e"&gt;yield&lt;/span&gt; i &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; i &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The &amp;#39;yield&amp;#39; is implicit and doesn&amp;#39;t need to be specified in most cases.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; i &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt; i &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; i &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The following code generates a list of coordinate pairs along with 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// an index into an array that represents the grid. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Note that the first for expression requires a do to be specified.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;height&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; width&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;10&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 10&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;sequence&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; row &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 0 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; width &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; 1 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; col &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 0 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; height &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;row&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; col&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; row&lt;span style="color:#0550ae"&gt;*&lt;/span&gt;width &lt;span style="color:#0550ae"&gt;+&lt;/span&gt; col&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;for&lt;/span&gt; e &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; sequence &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; e
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// (0, 0, 0)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// (0, 1, 1)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// (0, 2, 2)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// (0, 9, 9)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// (1, 0, 10)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// (1, 1, 11)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// (1, 2, 12)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;9&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 9&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 99&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="yield-keyword"&gt;yield! keyword&lt;a class="anchor" href="#yield-keyword"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Repeats &amp;#39;1 2 3 4 5&amp;#39; ten times
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; &lt;span style="color:#0550ae"&gt;_&lt;/span&gt; &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;10 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;yield&lt;/span&gt;&lt;span style="color:#0550ae"&gt;!&lt;/span&gt; seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 2&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 3&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 4&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 5&lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// When yield! is used in an expression, all other single values 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// must use the yield keyword:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Combine repeated values with their values
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; x &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;10 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;yield&lt;/span&gt; x
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;yield&lt;/span&gt;&lt;span style="color:#0550ae"&gt;!&lt;/span&gt; seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; i &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;x &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; i&lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Prime number
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Recursive isprime function.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;isprime&lt;/span&gt; n &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;rec&lt;/span&gt; check i &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; n&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;2 &lt;span style="color:#0550ae"&gt;||&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;n &lt;span style="color:#0550ae"&gt;%&lt;/span&gt; i &lt;span style="color:#0550ae"&gt;&amp;lt;&amp;gt;&lt;/span&gt; 0 &lt;span style="color:#0550ae"&gt;&amp;amp;&amp;amp;&lt;/span&gt; check &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;i &lt;span style="color:#0550ae"&gt;+&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; check 2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;aSequence&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; n &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;100 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; isprime n &lt;span style="color:#cf222e"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; n
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;for&lt;/span&gt; x &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; aSequence &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%d&amp;#34;&lt;/span&gt; x
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 1 2 3 5 7 ...47 53 ... 89 97
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Following example creates a multiplication table that consists of 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// tuples of three elements, each consisting of two factors and the product
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;multiplicationTable&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; i &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;9 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; j &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;9 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;i&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; j&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; i&lt;span style="color:#0550ae"&gt;*&lt;/span&gt;j&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Yield the values of a binary tree in a sequence.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;type&lt;/span&gt; &lt;span style="color:#1f2328"&gt;Tree&lt;/span&gt;&lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;&amp;#39;&lt;/span&gt;a&lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Tree &lt;span style="color:#cf222e"&gt;of&lt;/span&gt; &lt;span style="color:#cf222e"&gt;&amp;#39;&lt;/span&gt;a &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; Tree&lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;&amp;#39;&lt;/span&gt;a&lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; Tree&lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;&amp;#39;&lt;/span&gt;a&lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Leaf &lt;span style="color:#cf222e"&gt;of&lt;/span&gt; &lt;span style="color:#cf222e"&gt;&amp;#39;&lt;/span&gt;a
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// inorder : Tree&amp;lt;&amp;#39;a&amp;gt; -&amp;gt; seq&amp;lt;&amp;#39;a&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;rec&lt;/span&gt; inorder tree &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; tree &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Tree&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;x&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; left&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; right&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;yield&lt;/span&gt;&lt;span style="color:#0550ae"&gt;!&lt;/span&gt; inorder left
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;yield&lt;/span&gt; x
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;yield&lt;/span&gt;&lt;span style="color:#0550ae"&gt;!&lt;/span&gt; inorder right
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Leaf x &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;yield&lt;/span&gt; x
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;mytree&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; Tree&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;6&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; Tree&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;2&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; Leaf&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;),&lt;/span&gt; Leaf&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;3&lt;span style="color:#0550ae"&gt;)),&lt;/span&gt; Leaf&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;9&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seq1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; inorder mytree
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; seq1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// outut 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; seq &lt;span style="color:#0550ae"&gt;[&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 2&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 3&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 6&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;...]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="functions"&gt;Functions&lt;a class="anchor" href="#functions"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Using Seq.empty, or you can create a sequence of just one 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// specified element by using Seq.singleton.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqEmpty&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;empty
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqOne&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;singleton 10
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; seqOne
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output: seq [10]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// use Seq.init to create a sequence for which the elements are created 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// by using a function that you provide. You also provide a size for 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// the sequence. This function is just like List.init, except that the 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// elements are not created until you iterate through the sequence.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqFirst5MultiplesOf10&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;init 5 &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; n &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; n &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; 10&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;iter &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printf &lt;span style="color:#0a3069"&gt;&amp;#34;%d &amp;#34;&lt;/span&gt; elem&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; seqFirst5MultiplesOf10
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The output is
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 0 10 20 30 40
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Convert an array to a sequence by using a cast.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqFromArray1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;:&amp;gt;&lt;/span&gt; seq&lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt;int&lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Convert an array to a sequence by using Seq.ofArray.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqFromArray2&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[|&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;|]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;ofArray
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// using Seq.cast, you can create a sequence from a weakly typed 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// collection, such as those defined in System.Collections. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;open&lt;/span&gt; &lt;span style="color:#24292e"&gt;System&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;arr&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; ResizeArray&lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt;int&lt;span style="color:#0550ae"&gt;&amp;gt;(&lt;/span&gt;10&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;for&lt;/span&gt; i &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; arr&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;Add&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;10&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqCast&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;cast arr
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Seq.unfold generates a sequence from a computation function that takes 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// a state and transforms it to produce each subsequent element in the sequence
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seq1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 0 &lt;span style="color:#57606a"&gt;// Initial state
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;unfold &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; state &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;state &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; 20&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; None
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;state&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; state &lt;span style="color:#0550ae"&gt;+&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;The sequence seq1 contains numbers from 0 to 20.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;for&lt;/span&gt; x &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; seq1 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; printf &lt;span style="color:#0a3069"&gt;&amp;#34;%d &amp;#34;&lt;/span&gt; x
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The sequence seq1 contains numbers from 0 to 20.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;fib&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#57606a"&gt;// Initial state
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;unfold &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; state &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;snd state &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; 1000&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; None
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;fst state &lt;span style="color:#0550ae"&gt;+&lt;/span&gt; snd state&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;snd state&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; fst state &lt;span style="color:#0550ae"&gt;+&lt;/span&gt; snd state&lt;span style="color:#0550ae"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt;The sequence fib contains Fibonacci numbers.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;for&lt;/span&gt; x &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; fib &lt;span style="color:#cf222e"&gt;do&lt;/span&gt; printf &lt;span style="color:#0a3069"&gt;&amp;#34;%d &amp;#34;&lt;/span&gt; x
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The sequence fib contains Fibonacci numbers.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id="example"&gt;Example&lt;a class="anchor" href="#example"&gt;#&lt;/a&gt;&lt;/h5&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// generateInfiniteSequence generates sequences of floating point
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// numbers. The sequences generated are computed from the fDenominator
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// function, which has the type (int -&amp;gt; float) and computes the
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// denominator of each term in the sequence from the index of that
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// term. The isAlternating parameter is true if the sequence has
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// alternating signs.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;generateInfiniteSequence&lt;/span&gt; fDenominator isAlternating &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;isAlternating&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;initInfinite &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; index &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0 &lt;span style="color:#0550ae"&gt;/(&lt;/span&gt;fDenominator index&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;index &lt;span style="color:#0550ae"&gt;%&lt;/span&gt; 2 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;then&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0 &lt;span style="color:#cf222e"&gt;else&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;initInfinite &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; index &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0 &lt;span style="color:#0550ae"&gt;/(&lt;/span&gt;fDenominator index&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// The harmonic alternating series is like the harmonic series
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// except that it has alternating signs.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;harmonicAlternatingSeries&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; generateInfiniteSequence &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; index &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;float&lt;/span&gt; index&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// This is the series of reciprocals of the odd numbers.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;oddNumberSeries&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; generateInfiniteSequence &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; index &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;float&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;2 &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; index &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;))&lt;/span&gt; &lt;span style="color:#cf222e"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// This is the series of recipocals of the squares.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;squaresSeries&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; generateInfiniteSequence &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; index &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#cf222e"&gt;float&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;index &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; index&lt;span style="color:#0550ae"&gt;))&lt;/span&gt; &lt;span style="color:#cf222e"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// This function sums a sequence, up to the specified number of terms.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;sumSeq&lt;/span&gt; length sequence &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;unfold &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; state &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;subtotal&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; snd state &lt;span style="color:#0550ae"&gt;+&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;item &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;fst state &lt;span style="color:#0550ae"&gt;+&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; sequence
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;fst state &lt;span style="color:#0550ae"&gt;&amp;gt;=&lt;/span&gt; length&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; None
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Some&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;subtotal&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;fst state &lt;span style="color:#0550ae"&gt;+&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; subtotal&lt;span style="color:#0550ae"&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// This function sums an infinite sequence up to a given value
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// for the difference (epsilon) between subsequent terms,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// up to a maximum number of terms, whichever is reached first.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;infiniteSum&lt;/span&gt; infiniteSeq epsilon maxIteration &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; infiniteSeq
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; sumSeq maxIteration
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;pairwise
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;takeWhile &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; abs &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;snd elem &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; fst elem&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; epsilon&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;List&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;ofSeq
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;List&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;rev
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;List&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;head
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; snd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Compute the sums for three sequences that converge, and compare
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// the sums to the expected theoretical values.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;result1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; infiniteSum harmonicAlternatingSeries 0&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;00001 100000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Result: %f ln2: %f&amp;#34;&lt;/span&gt; result1 &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;log 2&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Result: 0.693152 ln2: 0.693147
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;pi&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Math&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;PI
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;result2&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; infiniteSum oddNumberSeries 0&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;00001 10000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Result: %f pi/4: %f&amp;#34;&lt;/span&gt; result2 &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;pi&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;4&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Result: 0.785373 pi/4: 0.785398
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Because this is not an alternating series, a much smaller epsilon
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// value and more terms are needed to obtain an accurate result.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;result3&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; infiniteSum squaresSeries 0&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0000001 1000000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Result: %f pi*pi/6: %f&amp;#34;&lt;/span&gt; result3 &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;pi&lt;span style="color:#0550ae"&gt;*&lt;/span&gt;pi&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;6&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; Result&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;644618 pi&lt;span style="color:#0550ae"&gt;*&lt;/span&gt;pi&lt;span style="color:#0550ae"&gt;/&lt;/span&gt;6&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;644934&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="transforming"&gt;Transforming&lt;a class="anchor" href="#transforming"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Seq.pairwise creates a new sequence in which successive elements of the input
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// sequence are grouped into tuples.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;printSeq&lt;/span&gt; seq1 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;iter &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;printf &lt;span style="color:#0a3069"&gt;&amp;#34;%A &amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; seq1&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqPairwise&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;pairwise &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; i &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; i&lt;span style="color:#0550ae"&gt;*&lt;/span&gt;i &lt;span style="color:#0550ae"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printSeq seqPairwise
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// (1, 4) (4, 9) (9, 16) (16, 25) (25, 36) (36, 49) (49, 64) (64, 81) (81, 100) 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqDelta&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;map &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; snd elem &lt;span style="color:#0550ae"&gt;-&lt;/span&gt; fst elem&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; seqPairwise
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printSeq seqDelta
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 3 5 7 9 11 13 15 17 19 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Seq.windowed is like Seq.pairwise, except that instead of producing a 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// sequence of tuples, it produces a sequence of arrays that contain copies 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// of adjacent elements (a window) from the sequence. You specify the number 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// of adjacent elements you want in each array.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqNumbers&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;5&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 2&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;5&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;;&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;5 &lt;span style="color:#0550ae"&gt;]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;:&amp;gt;&lt;/span&gt; seq&lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;float&lt;/span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqWindows&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;windowed 3 seqNumbers
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqMovingAverage&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;map &lt;span style="color:#24292e"&gt;Array&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;average seqWindows
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Initial sequence: &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printSeq seqNumbers
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 1.0 1.5 2.0 1.5 1.0 1.5 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt;Windows of length 3: &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printSeq seqWindows
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// [|1.0; 1.5; 2.0|] [|1.5; 2.0; 1.5|] [|2.0; 1.5; 1.0|] [|1.5; 1.0; 1.5|] 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt;Moving average: &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printSeq seqMovingAverage
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;5 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;666666667 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;5 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;333333333 &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="sorting-comparing--grouping"&gt;Sorting, Comparing &amp;amp; Grouping&lt;a class="anchor" href="#sorting-comparing--grouping"&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Seq.compareWith function. The function compares successive elements in 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// turn, and stops when it encounters the first unequal pair. Any additional 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// elements do not contribute to the comparison.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;sequence1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;sequence2&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Compare two sequences element by element.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;compareSequences&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;compareWith &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem1 elem2 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; elem1 &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; elem2 &lt;span style="color:#cf222e"&gt;then&lt;/span&gt; 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;elif&lt;/span&gt; elem1 &lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt; elem2 &lt;span style="color:#cf222e"&gt;then&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;else&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;compareResult1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; compareSequences sequence1 sequence2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;match&lt;/span&gt; compareResult1 &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;|&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Sequence1 is greater than sequence2.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;|&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;1 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Sequence1 is less than sequence2.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;|&lt;/span&gt; 0 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Sequence1 is equal to sequence2.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;|&lt;/span&gt; &lt;span style="color:#0550ae"&gt;_&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; failwith&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;Invalid comparison result.&amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// val compareResult1: int = -1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Seq.countBy takes a function that generates a value called a key for 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// each element. A key is generated for each element by calling this function 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// on each element. Seq.countBy then returns a sequence that contains the key 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// values, and a count of the number of elements that generated each value of 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// the key.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;mySeq1&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 100 &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;printSeq&lt;/span&gt; seq1 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;iter &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;printf &lt;span style="color:#0a3069"&gt;&amp;#34;%A &amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; seq1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqResult&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mySeq1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;countBy &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;%&lt;/span&gt; 3 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 0 &lt;span style="color:#cf222e"&gt;then&lt;/span&gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;elif&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;%&lt;/span&gt; 3 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 1 &lt;span style="color:#cf222e"&gt;then&lt;/span&gt; 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;else&lt;/span&gt; 2&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printSeq seqResult
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// (1, 34) (2, 33) (0, 33)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Seq.groupBy takes a sequence and a function that generates a key from an 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// element. The function is executed on each element of the sequence. 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Seq.groupBy returns a sequence of tuples, where the first element of each 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// tuple is the key and the second is a sequence of elements that produce 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// that key.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;sequence&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; seq &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 100 &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;printSeq&lt;/span&gt; seq1 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;iter &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;printf &lt;span style="color:#0a3069"&gt;&amp;#34;%A &amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; seq1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;sequences3&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sequences
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;groupBy &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; index &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;index &lt;span style="color:#0550ae"&gt;%&lt;/span&gt; 3 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;then&lt;/span&gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;elif&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;index &lt;span style="color:#0550ae"&gt;%&lt;/span&gt; 3 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;then&lt;/span&gt; 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;else&lt;/span&gt; 2&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sequences3 &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; printSeq
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// (1, seq [1; 4; 7; 10; ...]) (2, seq [2; 5; 8; 11; ...]) (0, seq [3; 6; 9; 12; ...])
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Seq.distinct. Or Seq.distinctBy, which takes a key-generating function to 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// be called on each element. The resulting sequence contains elements of the 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// original sequence that have unique keys; later elements that produce a 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// duplicate key to an earlier element are discarded.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;binary&lt;/span&gt; n &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;rec&lt;/span&gt; generateBinary n &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;n &lt;span style="color:#0550ae"&gt;/&lt;/span&gt; 2 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;then&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt;n&lt;span style="color:#0550ae"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;else&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;n &lt;span style="color:#0550ae"&gt;%&lt;/span&gt; 2&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;::&lt;/span&gt; generateBinary &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;n &lt;span style="color:#0550ae"&gt;/&lt;/span&gt; 2&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; generateBinary n
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;List&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;rev
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&amp;gt;&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;ofList
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;binary 1024&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// [1; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;resultSequence&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;distinct &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;binary 1024&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%A&amp;#34;&lt;/span&gt; resultSequence
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// seq [1; 0]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;inputSequence&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;{&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;5 &lt;span style="color:#0550ae"&gt;..&lt;/span&gt; 10 &lt;span style="color:#0550ae"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;printSeq&lt;/span&gt; seq1 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;iter &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;printf &lt;span style="color:#0a3069"&gt;&amp;#34;%A &amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; seq1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Original sequence: &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printSeq inputSequence
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printf &lt;span style="color:#0a3069"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printfn &lt;span style="color:#0a3069"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#0a3069"&gt;\n&lt;/span&gt;&lt;span style="color:#0a3069"&gt;Sequence with distinct absolute values: &amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;seqDistinctAbsoluteValue&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#24292e"&gt;Seq&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;distinctBy &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;fun&lt;/span&gt; elem &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; abs elem&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; inputSequence
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printSeq seqDistinctAbsoluteValue
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;5 &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;4 &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;3 &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;2 &lt;span style="color:#0550ae"&gt;-&lt;/span&gt;1 0 6 7 8 9 10 &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="slice"&gt;Slice&lt;a class="anchor" href="#slice"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In F#, a slice is a subset of any data type. Slices are similar to indexers, but instead of yielding a single value from the underlying data structure, they yield multiple ones. Slices use the .. operator syntax to select the range of specified indices in a data type.&lt;/p&gt;</description></item><item><title>Pattern Matching</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-8/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-8/</guid><description>&lt;h2 id="pattern"&gt;Pattern&lt;a class="anchor" href="#pattern"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Patterns are rules for transforming input data. They are used throughout F# to compare data with a logical structure or structures, decompose data into constituent parts, or extract information from data in various ways.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Name&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
					&lt;th&gt;Example&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Constant pattern&lt;/td&gt;
					&lt;td&gt;Any numeric, character, or string literal, an enumeration constant, or a defined literal identifier&lt;/td&gt;
					&lt;td&gt;1.0, &amp;ldquo;test&amp;rdquo;, 30, Color.Red&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Identifier pattern&lt;/td&gt;
					&lt;td&gt;A case value of a discriminated union, an exception label, or an active pattern case&lt;/td&gt;
					&lt;td&gt;Some(x) Failure(msg)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Variable pattern&lt;/td&gt;
					&lt;td&gt;identifier&lt;/td&gt;
					&lt;td&gt;a&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;as pattern&lt;/td&gt;
					&lt;td&gt;pattern as identifier&lt;/td&gt;
					&lt;td&gt;(a, b) as tuple1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;OR pattern&lt;/td&gt;
					&lt;td&gt;pattern1&lt;/td&gt;
					&lt;td&gt;pattern2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;AND pattern&lt;/td&gt;
					&lt;td&gt;pattern1 &amp;amp; pattern2&lt;/td&gt;
					&lt;td&gt;(a, b) &amp;amp; (_, &amp;ldquo;test&amp;rdquo;)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Cons pattern&lt;/td&gt;
					&lt;td&gt;identifier :: list-identifier&lt;/td&gt;
					&lt;td&gt;h :: t&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;List pattern&lt;/td&gt;
					&lt;td&gt;[ pattern_1; &amp;hellip; ; pattern_n ]&lt;/td&gt;
					&lt;td&gt;[ a; b; c ]&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Array pattern&lt;/td&gt;
					&lt;td&gt;[&lt;/td&gt;
					&lt;td&gt;pattern_1; ..; pattern_n&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Parenthesized pattern&lt;/td&gt;
					&lt;td&gt;( pattern )&lt;/td&gt;
					&lt;td&gt;( a )&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Tuple pattern&lt;/td&gt;
					&lt;td&gt;( pattern_1, &amp;hellip; , pattern_n )&lt;/td&gt;
					&lt;td&gt;( a, b )&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Record pattern&lt;/td&gt;
					&lt;td&gt;{ identifier1 = pattern_1; &amp;hellip; ; identifier_n = pattern_n }&lt;/td&gt;
					&lt;td&gt;{ Name = name; }&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Wildcard pattern&lt;/td&gt;
					&lt;td&gt;_&lt;/td&gt;
					&lt;td&gt;_&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Pattern together with type annotation&lt;/td&gt;
					&lt;td&gt;pattern : type&lt;/td&gt;
					&lt;td&gt;a : int&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Type test pattern&lt;/td&gt;
					&lt;td&gt;:? type [ as identifier ]&lt;/td&gt;
					&lt;td&gt;:? System.DateTime as dt&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Null pattern&lt;/td&gt;
					&lt;td&gt;null&lt;/td&gt;
					&lt;td&gt;null&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Nameof pattern&lt;/td&gt;
					&lt;td&gt;nameof expr&lt;/td&gt;
					&lt;td&gt;nameof str&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="constant-patterns"&gt;Constant Patterns&lt;a class="anchor" href="#constant-patterns"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;[&amp;lt;&lt;/span&gt;Literal&lt;span style="color:#0550ae"&gt;&amp;gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;Three&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 3
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;filter123&lt;/span&gt; x &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; x &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;// The following line contains literal patterns combined with an OR pattern.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; 1 &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; 2 &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Three &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Found 1, 2, or 3!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#57606a"&gt;// The following line contains a variable pattern.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; var1 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%d&amp;#34;&lt;/span&gt; var1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;for&lt;/span&gt; x &lt;span style="color:#cf222e"&gt;in&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;..&lt;/span&gt;10 &lt;span style="color:#cf222e"&gt;do&lt;/span&gt; filter123 x
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Found 1, 2, or 3!
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Found 1, 2, or 3!
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Found 1, 2, or 3!
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 4
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 5
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 6
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 7
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 8
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 9
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 10
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;type&lt;/span&gt; &lt;span style="color:#1f2328"&gt;Color&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Red &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Green &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Blue &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;printColorName&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;color&lt;span style="color:#0550ae"&gt;:&lt;/span&gt;Color&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; color &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; &lt;span style="color:#24292e"&gt;Color&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Red &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Red&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; &lt;span style="color:#24292e"&gt;Color&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Green &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Green&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; &lt;span style="color:#24292e"&gt;Color&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Blue &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Blue&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; &lt;span style="color:#0550ae"&gt;_&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#6a737d"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printColorName &lt;span style="color:#24292e"&gt;Color&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Red
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printColorName &lt;span style="color:#24292e"&gt;Color&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Green
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printColorName &lt;span style="color:#24292e"&gt;Color&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Blue
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Red
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Green
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; Blue&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="identifier-patterns"&gt;Identifier Patterns&lt;a class="anchor" href="#identifier-patterns"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;printOption&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;data &lt;span style="color:#0550ae"&gt;:&lt;/span&gt; int option&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; data &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Some var1 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%d&amp;#34;&lt;/span&gt; var1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; None &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; &lt;span style="color:#6a737d"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;type&lt;/span&gt; &lt;span style="color:#1f2328"&gt;PersonName&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; FirstOnly &lt;span style="color:#cf222e"&gt;of&lt;/span&gt; &lt;span style="color:#cf222e"&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; LastOnly &lt;span style="color:#cf222e"&gt;of&lt;/span&gt; &lt;span style="color:#cf222e"&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; FirstLast &lt;span style="color:#cf222e"&gt;of&lt;/span&gt; &lt;span style="color:#cf222e"&gt;string&lt;/span&gt; &lt;span style="color:#0550ae"&gt;*&lt;/span&gt; &lt;span style="color:#cf222e"&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;constructQuery&lt;/span&gt; personName &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; personName &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; FirstOnly&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;firstName&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;May I call you %s?&amp;#34;&lt;/span&gt; firstName
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; LastOnly&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;lastName&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Are you Mr. or Ms. %s?&amp;#34;&lt;/span&gt; lastName
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; FirstLast&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;firstName&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; lastName&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;Are you %s %s?&amp;#34;&lt;/span&gt; firstName lastName
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;constructQuery &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;FirstOnly&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;john&amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;constructQuery &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;LastOnly&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;smith&amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;constructQuery &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;FirstLast&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;john&amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;,&lt;/span&gt;&lt;span style="color:#0a3069"&gt;&amp;#34;smith&amp;#34;&lt;/span&gt;&lt;span style="color:#0550ae"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// May I call you john?
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Are you Mr. or Ms. smith?
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; Are you john smith&lt;span style="color:#0550ae"&gt;?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="variable-patterns"&gt;Variable Patterns&lt;a class="anchor" href="#variable-patterns"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;function1&lt;/span&gt; x &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; x &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;var1&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; var2&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;when&lt;/span&gt; var1 &lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; var2 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%d is greater than %d&amp;#34;&lt;/span&gt; var1 var2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;var1&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; var2&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#cf222e"&gt;when&lt;/span&gt; var1 &lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt; var2 &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%d is less than %d&amp;#34;&lt;/span&gt; var1 var2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;var1&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; var2&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%d equals %d&amp;#34;&lt;/span&gt; var1 var2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;function1 &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;1&lt;span style="color:#0550ae"&gt;,&lt;/span&gt;2&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;function1 &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;2&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;function1 &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;0&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 1 is less than 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 2 is greater than 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; 0 equals 0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="as-pattern"&gt;as Pattern&lt;a class="anchor" href="#as-pattern"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;as&lt;/code&gt; pattern is a pattern that has an as clause appended to it.&lt;/p&gt;</description></item><item><title>Active Patterns</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-9/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-9/</guid><description>&lt;h2 id="active-patterns"&gt;Active Patterns&lt;a class="anchor" href="#active-patterns"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Active patterns enable you to define named partitions that subdivide input data, so that you can use these names in a pattern matching expression just as you would for a discriminated union. You can use active patterns to decompose data in a customized manner for each partition.&lt;/p&gt;
&lt;h3 id="syntax"&gt;Syntax&lt;a class="anchor" href="#syntax"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Active pattern of one choice.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(|&lt;/span&gt;identifier&lt;span style="color:#0550ae"&gt;|)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt;arguments&lt;span style="color:#0550ae"&gt;]&lt;/span&gt; valueToMatch &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; expression
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Active Pattern with multiple choices.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Uses a FSharp.Core.Choice&amp;lt;_,...,_&amp;gt; based on the number of case names. In F#, the limitation n &amp;lt;= 7 applies.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(|&lt;/span&gt;identifier1&lt;span style="color:#0550ae"&gt;|&lt;/span&gt;identifier2&lt;span style="color:#0550ae"&gt;|...|)&lt;/span&gt; valueToMatch &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; expression
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Partial active pattern definition.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Uses a FSharp.Core.option&amp;lt;_&amp;gt; to represent if the type is satisfied at the call site.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(|&lt;/span&gt;identifier&lt;span style="color:#0550ae"&gt;|_|)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt;arguments&lt;span style="color:#0550ae"&gt;]&lt;/span&gt; valueToMatch &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; expression&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="examples"&gt;Examples&lt;a class="anchor" href="#examples"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Multiple choices&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(|&lt;/span&gt;Even&lt;span style="color:#0550ae"&gt;|&lt;/span&gt;Odd&lt;span style="color:#0550ae"&gt;|)&lt;/span&gt; input &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; input &lt;span style="color:#0550ae"&gt;%&lt;/span&gt; 2 &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; 0 &lt;span style="color:#cf222e"&gt;then&lt;/span&gt; Even &lt;span style="color:#cf222e"&gt;else&lt;/span&gt; Odd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;TestNumber&lt;/span&gt; input &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; input &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Even &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%d is even&amp;#34;&lt;/span&gt; input
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; Odd &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%d is odd&amp;#34;&lt;/span&gt; input
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TestNumber 7
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TestNumber 11
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TestNumber 32
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// output
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 7 is odd
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// 11 is odd
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; 32 is even&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Decompose data types&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;open&lt;/span&gt; &lt;span style="color:#24292e"&gt;System.Drawing&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(|&lt;/span&gt;RGB&lt;span style="color:#0550ae"&gt;|)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;col &lt;span style="color:#0550ae"&gt;:&lt;/span&gt; &lt;span style="color:#24292e"&gt;System&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#24292e"&gt;Drawing&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Color&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt; col&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;R&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; col&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;G&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; col&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;B &lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(|&lt;/span&gt;HSB&lt;span style="color:#0550ae"&gt;|)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;col &lt;span style="color:#0550ae"&gt;:&lt;/span&gt; &lt;span style="color:#24292e"&gt;System&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#24292e"&gt;Drawing&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Color&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt; col&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;GetHue&lt;span style="color:#6a737d"&gt;()&lt;/span&gt;&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; col&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;GetSaturation&lt;span style="color:#6a737d"&gt;()&lt;/span&gt;&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; col&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;GetBrightness&lt;span style="color:#6a737d"&gt;()&lt;/span&gt; &lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;printRGB&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;col&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; &lt;span style="color:#24292e"&gt;System&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#24292e"&gt;Drawing&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Color&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; col &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; RGB&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;r&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; g&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; b&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34; Red: %d Green: %d Blue: %d&amp;#34;&lt;/span&gt; r g b
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;printHSB&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;col&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; &lt;span style="color:#24292e"&gt;System&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;&lt;span style="color:#24292e"&gt;Drawing&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Color&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;match&lt;/span&gt; col &lt;span style="color:#cf222e"&gt;with&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#0550ae"&gt;|&lt;/span&gt; HSB&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;h&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; s&lt;span style="color:#0550ae"&gt;,&lt;/span&gt; b&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;-&amp;gt;&lt;/span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34; Hue: %f Saturation: %f Brightness: %f&amp;#34;&lt;/span&gt; h s b
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#953800"&gt;printAll&lt;/span&gt; col colorString &lt;span style="color:#0550ae"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; printfn &lt;span style="color:#0a3069"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt; colorString
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; printRGB col
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; printHSB col
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printAll &lt;span style="color:#24292e"&gt;Color&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Red &lt;span style="color:#0a3069"&gt;&amp;#34;Red&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printAll &lt;span style="color:#24292e"&gt;Color&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Black &lt;span style="color:#0a3069"&gt;&amp;#34;Black&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printAll &lt;span style="color:#24292e"&gt;Color&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;White &lt;span style="color:#0a3069"&gt;&amp;#34;White&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printAll &lt;span style="color:#24292e"&gt;Color&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;Gray &lt;span style="color:#0a3069"&gt;&amp;#34;Gray&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;printAll &lt;span style="color:#24292e"&gt;Color&lt;/span&gt;&lt;span style="color:#1f2328"&gt;.&lt;/span&gt;BlanchedAlmond &lt;span style="color:#0a3069"&gt;&amp;#34;BlanchedAlmond&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Red
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Red: 255 Green: 0 Blue: 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Hue: 360.000000 Saturation: 1.000000 Brightness: 0.500000
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Black
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Red: 0 Green: 0 Blue: 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Hue: 0.000000 Saturation: 0.000000 Brightness: 0.000000
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// White
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Red: 255 Green: 255 Blue: 255
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Hue: 0.000000 Saturation: 0.000000 Brightness: 1.000000
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Gray
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Red: 128 Green: 128 Blue: 128
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Hue: 0.000000 Saturation: 0.000000 Brightness: 0.501961
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// BlanchedAlmond
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// Red: 255 Green: 235 Blue: 205
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0550ae"&gt;//&lt;/span&gt; Hue&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; 36&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;000000 Saturation&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; 1&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;000000 Brightness&lt;span style="color:#0550ae"&gt;:&lt;/span&gt; 0&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;901961&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="partial-active-patterns"&gt;Partial Active Patterns&lt;a class="anchor" href="#partial-active-patterns"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Active patterns that do not always produce a value are called partial active patterns; they have a return value that is an option type. To define a partial active pattern, you use a wildcard character (_) at the end of the list of patterns inside the banana clips.&lt;/p&gt;</description></item><item><title>Computations 1</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-10/</guid><description>&lt;h2 id="computation-expressions"&gt;Computation expressions&lt;a class="anchor" href="#computation-expressions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Computation expressions in F# provide a convenient syntax for writing computations that can be sequenced and combined using control flow constructs and bindings. Depending on the kind of computation expression, they can be thought of as a way to express monads, monoids, monad transformers, and applicative functors. However, unlike other languages (such as do-notation in Haskell), they are not tied to a single abstraction, and do not rely on macros or other forms of metaprogramming to accomplish a convenient and context-sensitive syntax.&lt;/p&gt;</description></item><item><title>Computations 2</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-11/</guid><description>&lt;h2 id="map"&gt;Map&lt;a class="anchor" href="#map"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Common Names: map, fmap, lift, Select&lt;/p&gt;
&lt;p&gt;Common Operators: &lt;code&gt;&amp;lt;$&amp;gt; &amp;lt;!&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;What it does: Lifts a function into the elevated world&lt;/p&gt;
&lt;p&gt;Signature: &lt;code&gt;(a-&amp;gt;b) -&amp;gt; E&amp;lt;a&amp;gt; -&amp;gt; E&amp;lt;b&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Alternatively with the parameters reversed: &lt;code&gt;E&amp;lt;a&amp;gt; -&amp;gt; (a-&amp;gt;b) -&amp;gt; E&amp;lt;b&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Description
“map” is the generic name for something that takes a function in the normal world and transforms it into a corresponding function in the elevated world.&lt;/p&gt;
&lt;p&gt;An alternative interpretation of map is that it is a two parameter function that takes an elevated value &lt;code&gt;E&amp;lt;a&amp;gt;&lt;/code&gt; and a normal function &lt;code&gt;a-&amp;gt;b&lt;/code&gt;, and returns a new elevated value &lt;code&gt;E&amp;lt;b&amp;gt;&lt;/code&gt; generated by applying the function a-&amp;gt;b to the internal elements of &lt;code&gt;E&amp;lt;a&amp;gt;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Async</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-12/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-12/</guid><description>&lt;h2 id="async-expressions"&gt;Async expressions&lt;a class="anchor" href="#async-expressions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Async expressions provide one way of performing computations asynchronously, that is, without blocking execution of other work.&lt;/p&gt;
&lt;h3 id="asynchronous-binding-by-using-let"&gt;Asynchronous Binding by Using let!&lt;a class="anchor" href="#asynchronous-binding-by-using-let"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The effect of let! is to enable execution to continue on other computations or threads as the computation is being performed. After the right side of the let! binding returns, the rest of the async expression resumes execution.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// let just stores the result as an asynchronous operation.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;result1 &lt;span style="color:#0550ae"&gt;:&lt;/span&gt; Async&lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;byte&lt;/span&gt;&lt;span style="color:#6a737d"&gt;[]&lt;/span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; stream&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;AsyncRead&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;bufferSize&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#57606a"&gt;// let! completes the asynchronous operation and returns the data.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;let&lt;/span&gt;&lt;span style="color:#0550ae"&gt;!&lt;/span&gt; &lt;span style="color:#0550ae"&gt;(&lt;/span&gt;result2 &lt;span style="color:#0550ae"&gt;:&lt;/span&gt; &lt;span style="color:#cf222e"&gt;byte&lt;/span&gt;&lt;span style="color:#6a737d"&gt;[]&lt;/span&gt;&lt;span style="color:#0550ae"&gt;)&lt;/span&gt; &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; stream&lt;span style="color:#0550ae"&gt;.&lt;/span&gt;AsyncRead&lt;span style="color:#0550ae"&gt;(&lt;/span&gt;bufferSize&lt;span style="color:#0550ae"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;let!&lt;/code&gt; can only be used to await F# async computations &lt;code&gt;Async&amp;lt;T&amp;gt;&lt;/code&gt; directly. You can await other kinds of asynchronous operations indirectly:&lt;/p&gt;</description></item><item><title>Task</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-13/</guid><description>&lt;h2 id="tasks-expressions"&gt;Tasks expressions&lt;a class="anchor" href="#tasks-expressions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Asynchronous code is normally authored using async expressions. Using task expressions is preferred when interoperating extensively with .NET libraries that create or consume .NET tasks. Task expressions can also improve performance and the debugging experience. However, task expressions come with some limitations.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;task { expression }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The task is started immediately after this code is executed and runs on the current thread until its first asynchronous operation is performed (for example, an asynchronous sleep, asynchronous I/O, or other primitive asynchronous operation). The type of the expression is &lt;code&gt;Task&amp;lt;'T&amp;gt;&lt;/code&gt;, where &lt;code&gt;'T&lt;/code&gt; is the type returned by the expression when the return keyword is used.&lt;/p&gt;</description></item><item><title>Lazy</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-14/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-14/</guid><description>&lt;h2 id="lazy-expressions"&gt;Lazy Expressions&lt;a class="anchor" href="#lazy-expressions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Lazy expressions are expressions that are not evaluated immediately, but are instead evaluated when the result is needed. This can help to improve the performance of your code.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;let identifier = lazy ( expression )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Lazy expressions enable you to improve performance by restricting the execution of an expression to only those situations in which a result is needed.&lt;/p&gt;
&lt;p&gt;To force the expressions to be performed, you call the method Force. Force causes the execution to be performed only one time. Subsequent calls to Force return the same result, but do not execute any code.&lt;/p&gt;</description></item><item><title>Namespace, Module &amp; Import</title><link>https://harryho.github.io/coding/f-sharp/fsharp-note-2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://harryho.github.io/coding/f-sharp/fsharp-note-2/</guid><description>&lt;h2 id="namespace"&gt;Namespace&lt;a class="anchor" href="#namespace"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;A namespace lets you organize code into areas of related functionality by enabling you to attach a name to a grouping of F# program elements. Namespaces are typically top-level elements in F# files.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Namespaces &lt;strong&gt;cannot&lt;/strong&gt; directly contain values and functions. Instead, values and functions must be included in modules, and modules are included in namespaces. Namespaces can contain types, modules.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-fsharp" data-lang="fsharp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;namespace&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt;&lt;span style="color:#cf222e"&gt;rec&lt;/span&gt;&lt;span style="color:#0550ae"&gt;]&lt;/span&gt; &lt;span style="color:#0550ae"&gt;[&lt;/span&gt;parent&lt;span style="color:#0550ae"&gt;-&lt;/span&gt;namespaces&lt;span style="color:#0550ae"&gt;.]&lt;/span&gt;identifier&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="modules"&gt;Modules&lt;a class="anchor" href="#modules"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;A module is a grouping of F# code, such as values, types, and function values, in an F# program. Grouping code in modules helps keep related code together and helps avoid name conflicts in your program.&lt;/p&gt;</description></item></channel></rss>