vsintegration/ProjectTemplates/TutorialProject/Template/xlf/Tutorial.fsx.en.xlf (1,637 lines of code) (raw):

<?xml version="1.0" encoding="utf-8"?> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd"> <file datatype="xml" source-language="en" target-language="en" original="../Tutorial.fsx"> <body> <trans-unit id="SampleHeader"> <source>This sample will guide you through elements of the F# language.</source> <target state="new">This sample will guide you through elements of the F# language.</target> <note /> </trans-unit> <trans-unit id="Instructions-Line1"> <source>To execute the code in F# Interactive, highlight a section of code and press Alt-Enter or right-click</source> <target state="new">To execute the code in F# Interactive, highlight a section of code and press Alt-Enter or right-click</target> <note /> </trans-unit> <trans-unit id="Instructions-Line2"> <source>and select "Execute in Interactive". You can open the F# Interactive Window from the "View" menu.</source> <target state="new">and select "Execute in Interactive". You can open the F# Interactive Window from the "View" menu.</target> <note /> </trans-unit> <trans-unit id="MoreAbout"> <source>For more about F#, see:</source> <target state="new">For more about F#, see:</target> <note /> </trans-unit> <trans-unit id="SeeDocumentaton"> <source>To see this tutorial in documentation form, see:</source> <target state="new">To see this tutorial in documentation form, see:</target> <note /> </trans-unit> <trans-unit id="LearnMoreAbout"> <source>To learn more about applied F# programming, use</source> <target state="new">To learn more about applied F# programming, use</target> <note /> </trans-unit> <trans-unit id="ToInstall-Line1"> <source>To install the Visual F# Power Tools, use</source> <target state="new">To install the Visual F# Power Tools, use</target> <note /> </trans-unit> <trans-unit id="ToInstall-Line2"> <source>'Tools' --&gt; 'Extensions and Updates' --&gt; `Online` and search</source> <target state="new">'Tools' --&gt; 'Extensions and Updates' --&gt; `Online` and search</target> <note /> </trans-unit> <trans-unit id="AdditionalTemplates-Line1"> <source>For additional templates to use with F#, see the 'Online Templates' in Visual Studio,</source> <target state="new">For additional templates to use with F#, see the 'Online Templates' in Visual Studio,</target> <note /> </trans-unit> <trans-unit id="AdditionalTemplates-Line2"> <source>'New Project' --&gt; 'Online Templates'</source> <target state="new">'New Project' --&gt; 'Online Templates'</target> <note /> </trans-unit> <trans-unit id="SupportsComments"> <source>F# supports three kinds of comments:</source> <target state="new">F# supports three kinds of comments:</target> <note /> </trans-unit> <trans-unit id="DoubleSlash"> <source>1. Double-slash comments. These are used in most situations.</source> <target state="new">1. Double-slash comments. These are used in most situations.</target> <note /> </trans-unit> <trans-unit id="MLStyle"> <source>2. ML-style Block comments. These aren't used that often.</source> <target state="new">2. ML-style Block comments. These aren't used that often.</target> <note /> </trans-unit> <trans-unit id="TripleSlash-Line1"> <source>3. Triple-slash comments. These are used for documenting functions, types, and so on.</source> <target state="new">3. Triple-slash comments. These are used for documenting functions, types, and so on.</target> <note /> </trans-unit> <trans-unit id="TripleSlash-Line2"> <source>They will appear as text when you hover over something which is decorated with these comments.</source> <target state="new">They will appear as text when you hover over something which is decorated with these comments.</target> <note /> </trans-unit> <trans-unit id="XmlComments-Line1"> <source>They also support .NET-style XML comments, which allow you to generate reference documentation,</source> <target state="new">They also support .NET-style XML comments, which allow you to generate reference documentation,</target> <note /> </trans-unit> <trans-unit id="XmlComments-Line2"> <source>and they also allow editors (such as Visual Studio) to extract information from them.</source> <target state="new">and they also allow editors (such as Visual Studio) to extract information from them.</target> <note /> </trans-unit> <trans-unit id="XmlComments-Line3"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/xml-documentation</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/xml-documentation</target> <note /> </trans-unit> <trans-unit id="OpenNamespaces"> <source>Open namespaces using the 'open' keyword.</source> <target state="new">Open namespaces using the 'open' keyword.</target> <note /> </trans-unit> <trans-unit id="LearnMore"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/import-declarations-the-open-keyword</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/import-declarations-the-open-keyword</target> <note /> </trans-unit> <trans-unit id="Module-Line1"> <source>A module is a grouping of F# code, such as values, types, and function values.</source> <target state="new">A module is a grouping of F# code, such as values, types, and function values.</target> <note /> </trans-unit> <trans-unit id="Module-Line2"> <source>Grouping code in modules helps keep related code together and helps avoid name conflicts in your program.</source> <target state="new">Grouping code in modules helps keep related code together and helps avoid name conflicts in your program.</target> <note /> </trans-unit> <trans-unit id="Module-Line3"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/modules</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/modules</target> <note /> </trans-unit> <trans-unit id="SampleInt"> <source>This is a sample integer.</source> <target state="new">This is a sample integer.</target> <note /> </trans-unit> <trans-unit id="SampleFloat"> <source>This is a sample floating point number.</source> <target state="new">This is a sample floating point number.</target> <note /> </trans-unit> <trans-unit id="Computed-Line1"> <source>This computed a new number by some arithmetic. Numeric types are converted using</source> <target state="new">This computed a new number by some arithmetic. Numeric types are converted using</target> <note /> </trans-unit> <trans-unit id="Computed-Line2"> <source>functions 'int', 'double' and so on.</source> <target state="new">functions 'int', 'double' and so on.</target> <note /> </trans-unit> <trans-unit id="ListNumbers"> <source>This is a list of the numbers from 0 to 99.</source> <target state="new">This is a list of the numbers from 0 to 99.</target> <note /> </trans-unit> <trans-unit id="ListSquares"> <source>This is a list of all tuples containing all the numbers from 0 to 99 and their squares.</source> <target state="new">This is a list of all tuples containing all the numbers from 0 to 99 and their squares.</target> <note /> </trans-unit> <trans-unit id="PrintList1"> <source>The next line prints a list that includes tuples, using '%A' for generic printing.</source> <target state="new">The next line prints a list that includes tuples, using '%A' for generic printing.</target> <note /> </trans-unit> <trans-unit id="SampleIntType"> <source>This is a sample integer with a type annotation</source> <target state="new">This is a sample integer with a type annotation</target> <note /> </trans-unit> <trans-unit id="ValuesImmutable-Line1"> <source>Values in F# are immutable by default. They cannot be changed</source> <target state="new">Values in F# are immutable by default. They cannot be changed</target> <note /> </trans-unit> <trans-unit id="ValuesImmutable-Line2"> <source>in the course of a program's execution unless explicitly marked as mutable.</source> <target state="new">in the course of a program's execution unless explicitly marked as mutable.</target> <note /> </trans-unit> <trans-unit id="ValuesImmutable-Line3"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/values/index#why-immutable</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/values/index#why-immutable</target> <note /> </trans-unit> <trans-unit id="LetKeyword-Line1"> <source>Binding a value to a name via 'let' makes it immutable.</source> <target state="new">Binding a value to a name via 'let' makes it immutable.</target> <note /> </trans-unit> <trans-unit id="LetKeyword-Line2"> <source>The second line of code fails to compile because 'number' is immutable and bound.</source> <target state="new">The second line of code fails to compile because 'number' is immutable and bound.</target> <note /> </trans-unit> <trans-unit id="LetKeyword-Line3"> <source>Re-defining 'number' to be a different value is not allowed in F#.</source> <target state="new">Re-defining 'number' to be a different value is not allowed in F#.</target> <note /> </trans-unit> <trans-unit id="MutableKeyword"> <source>A mutable binding. This is required to be able to mutate the value of 'otherNumber'.</source> <target state="new">A mutable binding. This is required to be able to mutate the value of 'otherNumber'.</target> <note /> </trans-unit> <trans-unit id="MutableAssignment-Line1"> <source>When mutating a value, use '&lt;-' to assign a new value.</source> <target state="new">When mutating a value, use '&lt;-' to assign a new value.</target> <note /> </trans-unit> <trans-unit id="MutableAssignment-Line2"> <source>You could not use '=' here for this purpose since it is used for equality</source> <target state="new">You could not use '=' here for this purpose since it is used for equality</target> <note /> </trans-unit> <trans-unit id="MutableAssignment-Line3"> <source>or other contexts such as 'let' or 'module'</source> <target state="new">or other contexts such as 'let' or 'module'</target> <note /> </trans-unit> <trans-unit id="FunctionsModule-Line1"> <source>Much of F# programming consists of defining functions that transform input data to produce</source> <target state="new">Much of F# programming consists of defining functions that transform input data to produce</target> <note /> </trans-unit> <trans-unit id="FunctionsModule-Line2"> <source>useful results.</source> <target state="new">useful results.</target> <note /> </trans-unit> <trans-unit id="FunctionsModule-Line3"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/functions/</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/functions/</target> <note /> </trans-unit> <trans-unit id="LetFunction-Line1"> <source>You use 'let' to define a function. This one accepts an integer argument and returns an integer.</source> <target state="new">You use 'let' to define a function. This one accepts an integer argument and returns an integer.</target> <note /> </trans-unit> <trans-unit id="LetFunction-Line2"> <source>Parentheses are optional for function arguments, except for when you use an explicit type annotation.</source> <target state="new">Parentheses are optional for function arguments, except for when you use an explicit type annotation.</target> <note /> </trans-unit> <trans-unit id="ApplyFunction-Line1"> <source>Apply the function, naming the function return result using 'let'.</source> <target state="new">Apply the function, naming the function return result using 'let'.</target> <note /> </trans-unit> <trans-unit id="ApplyFunction-Line2"> <source>The variable type is inferred from the function return type.</source> <target state="new">The variable type is inferred from the function return type.</target> <note /> </trans-unit> <trans-unit id="printf-Line1"> <source>This line uses '%d' to print the result as an integer. This is type-safe.</source> <target state="new">This line uses '%d' to print the result as an integer. This is type-safe.</target> <note /> </trans-unit> <trans-unit id="printf-Line2"> <source>If 'result1' were not of type 'int', then the line would fail to compile.</source> <target state="new">If 'result1' were not of type 'int', then the line would fail to compile.</target> <note /> </trans-unit> <trans-unit id="TypeAnnotation"> <source>When needed, annotate the type of a parameter name using '(argument:type)'. Parentheses are required.</source> <target state="new">When needed, annotate the type of a parameter name using '(argument:type)'. Parentheses are required.</target> <note /> </trans-unit> <trans-unit id="Conditionals-Line1"> <source>Conditionals use if/then/elid/elif/else.</source> <target state="new">Conditionals use if/then/elid/elif/else.</target> <note /> </trans-unit> <trans-unit id="Conditionals-Line2"> <source>Note that F# uses whitespace indentation-aware syntax, similar to languages like Python.</source> <target state="new">Note that F# uses whitespace indentation-aware syntax, similar to languages like Python.</target> <note /> </trans-unit> <trans-unit id="printf-Line3"> <source>This line uses '%f' to print the result as a float. As with '%d' above, this is type-safe.</source> <target state="new">This line uses '%f' to print the result as a float. As with '%d' above, this is type-safe.</target> <note /> </trans-unit> <trans-unit id="Booleans-Line1"> <source>Booleans are fundamental data types in F#. Here are some examples of Booleans and conditional logic.</source> <target state="new">Booleans are fundamental data types in F#. Here are some examples of Booleans and conditional logic.</target> <note /> </trans-unit> <trans-unit id="Booleans-Line2"> <source>To learn more, see:</source> <target state="new">To learn more, see:</target> <note /> </trans-unit> <trans-unit id="Booleans-Line3"> <source>and</source> <target state="new">and</target> <note /> </trans-unit> <trans-unit id="BooleanValues"> <source>Booleans values are 'true' and 'false'.</source> <target state="new">Booleans values are 'true' and 'false'.</target> <note /> </trans-unit> <trans-unit id="BooleanOperators"> <source>Operators on booleans are 'not', '&amp;&amp;' and '||'.</source> <target state="new">Operators on booleans are 'not', '&amp;&amp;' and '||'.</target> <note /> </trans-unit> <trans-unit id="BooleanPrintf"> <source>This line uses '%b'to print a boolean value. This is type-safe.</source> <target state="new">This line uses '%b'to print a boolean value. This is type-safe.</target> <note /> </trans-unit> <trans-unit id="Strings-Line1"> <source>Strings are fundamental data types in F#. Here are some examples of Strings and basic String manipulation.</source> <target state="new">Strings are fundamental data types in F#. Here are some examples of Strings and basic String manipulation.</target> <note /> </trans-unit> <trans-unit id="Strings-Line2"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/strings</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/strings</target> <note /> </trans-unit> <trans-unit id="StringQuotes"> <source>Strings use double quotes.</source> <target state="new">Strings use double quotes.</target> <note /> </trans-unit> <trans-unit id="StringLiterals-Line1"> <source>Strings can also use @ to create a verbatim string literal.</source> <target state="new">Strings can also use @ to create a verbatim string literal.</target> <note /> </trans-unit> <trans-unit id="StringLiterals-Line2"> <source>This will ignore escape characters such as '\', '\n', '\t', etc.</source> <target state="new">This will ignore escape characters such as '\', '\n', '\t', etc.</target> <note /> </trans-unit> <trans-unit id="StringTripleQuotes"> <source>String literals can also use triple-quotes.</source> <target state="new">String literals can also use triple-quotes.</target> <note /> </trans-unit> <trans-unit id="StringConcatenation"> <source>String concatenation is normally done with the '+' operator.</source> <target state="new">String concatenation is normally done with the '+' operator.</target> <note /> </trans-unit> <trans-unit id="StringPrinting"> <source>This line uses '%s' to print a string value. This is type-safe.</source> <target state="new">This line uses '%s' to print a string value. This is type-safe.</target> <note /> </trans-unit> <trans-unit id="Substrings-Line1"> <source>Substrings use the indexer notation. This line extracts the first 7 characters as a substring.</source> <target state="new">Substrings use the indexer notation. This line extracts the first 7 characters as a substring.</target> <note /> </trans-unit> <trans-unit id="Substrings-Line2"> <source>Note that like many languages, Strings are zero-indexed in F#.</source> <target state="new">Note that like many languages, Strings are zero-indexed in F#.</target> <note /> </trans-unit> <trans-unit id="Tuples-Line1"> <source>Tuples are simple combinations of data values into a combined value.</source> <target state="new">Tuples are simple combinations of data values into a combined value.</target> <note /> </trans-unit> <trans-unit id="Tuples-Line2"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/tuples</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/tuples</target> <note /> </trans-unit> <trans-unit id="TupleInteger"> <source>A simple tuple of integers.</source> <target state="new">A simple tuple of integers.</target> <note /> </trans-unit> <trans-unit id="TupleFunction-Line1"> <source>A function that swaps the order of two values in a tuple.</source> <target state="new">A function that swaps the order of two values in a tuple.</target> <note /> </trans-unit> <trans-unit id="TupleFunction-Line2"> <source>F# Type Inference will automatically generalize the function to have a generic type,</source> <target state="new">F# Type Inference will automatically generalize the function to have a generic type,</target> <note /> </trans-unit> <trans-unit id="TupleFunction-Line3"> <source>meaning that it will work with any type.</source> <target state="new">meaning that it will work with any type.</target> <note /> </trans-unit> <trans-unit id="TupleMultiType-Line1"> <source>A tuple consisting of an integer, a string,</source> <target state="new">A tuple consisting of an integer, a string,</target> <note /> </trans-unit> <trans-unit id="TupleMultiType-Line2"> <source>and a double-precision floating point number.</source> <target state="new">and a double-precision floating point number.</target> <note /> </trans-unit> <trans-unit id="TupleTypeAnnotation-Line1"> <source>A simple tuple of integers with a type annotation.</source> <target state="new">A simple tuple of integers with a type annotation.</target> <note /> </trans-unit> <trans-unit id="TupleTypeAnnotation-Line2"> <source>Type annotations for tuples use the * symbol to separate elements</source> <target state="new">Type annotations for tuples use the * symbol to separate elements</target> <note /> </trans-unit> <trans-unit id="StructTuple-Line1"> <source>Tuples are normally objects, but they can also be represented as structs.</source> <target state="new">Tuples are normally objects, but they can also be represented as structs.</target> <note /> </trans-unit> <trans-unit id="StructTuple-Line2"> <source>These interoperate completely with structs in C# and Visual Basic.NET; however,</source> <target state="new">These interoperate completely with structs in C# and Visual Basic.NET; however,</target> <note /> </trans-unit> <trans-unit id="StructTuple-Line3"> <source>struct tuples are not implicitly convertable with object tuples (often called reference tuples).</source> <target state="new">struct tuples are not implicitly convertable with object tuples (often called reference tuples).</target> <note /> </trans-unit> <trans-unit id="StructTuple-Line4"> <source>The second line below will fail to compile because of this. Uncomment it to see what happens.</source> <target state="new">The second line below will fail to compile because of this. Uncomment it to see what happens.</target> <note /> </trans-unit> <trans-unit id="TupleConvert-Line1"> <source>Although you cannot implicitly convert between struct tuples and reference tuples,</source> <target state="new">Although you cannot implicitly convert between struct tuples and reference tuples,</target> <note /> </trans-unit> <trans-unit id="TupleConvert-Line2"> <source>you can explicitly convert via pattern matching, as demonstrated below.</source> <target state="new">you can explicitly convert via pattern matching, as demonstrated below.</target> <note /> </trans-unit> <trans-unit id="Pipes-Line1"> <source>The F# pipe operators ('|&gt;', '&lt;|', etc.) and F# composition operators ('&gt;&gt;', '&lt;&lt;')</source> <target state="new">The F# pipe operators ('|&gt;', '&lt;|', etc.) and F# composition operators ('&gt;&gt;', '&lt;&lt;')</target> <note /> </trans-unit> <trans-unit id="Pipes-Line2"> <source>are used extensively when processing data. These operators are themselves functions</source> <target state="new">are used extensively when processing data. These operators are themselves functions</target> <note /> </trans-unit> <trans-unit id="Pipes-Line3"> <source>which make use of Partial Application.</source> <target state="new">which make use of Partial Application.</target> <note /> </trans-unit> <trans-unit id="Pipes-Line4"> <source>To learn more about these operators, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/functions/#function-composition-and-pipelining</source> <target state="new">To learn more about these operators, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/functions/#function-composition-and-pipelining</target> <note /> </trans-unit> <trans-unit id="Pipes-Line5"> <source>To learn more about Partial Application, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/functions/#partial-application-of-arguments</source> <target state="new">To learn more about Partial Application, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/functions/#partial-application-of-arguments</target> <note /> </trans-unit> <trans-unit id="Squares"> <source>Squares a value.</source> <target state="new">Squares a value.</target> <note /> </trans-unit> <trans-unit id="AddOne"> <source>Adds 1 to a value.</source> <target state="new">Adds 1 to a value.</target> <note /> </trans-unit> <trans-unit id="TestOdd"> <source>Tests if an integer value is odd via modulo.</source> <target state="new">Tests if an integer value is odd via modulo.</target> <note /> </trans-unit> <trans-unit id="NumberList1"> <source>A list of 5 numbers. More on lists later.</source> <target state="new">A list of 5 numbers. More on lists later.</target> <note /> </trans-unit> <trans-unit id="FilterWithoutPipes-Line1"> <source>Given a list of integers, it filters out the even numbers,</source> <target state="new">Given a list of integers, it filters out the even numbers,</target> <note /> </trans-unit> <trans-unit id="FilterWithoutPipes-Line2"> <source>squares the resulting odds, and adds 1 to the squared odds.</source> <target state="new">squares the resulting odds, and adds 1 to the squared odds.</target> <note /> </trans-unit> <trans-unit id="FilterShorter-Line1"> <source>A shorter way to write 'squareOddValuesAndAddOne' is to nest each</source> <target state="new">A shorter way to write 'squareOddValuesAndAddOne' is to nest each</target> <note /> </trans-unit> <trans-unit id="FilterShorter-Line2"> <source>sub-result into the function calls themselves.</source> <target state="new">sub-result into the function calls themselves.</target> <note /> </trans-unit> <trans-unit id="FilterShorter-Line3"> <source>This makes the function much shorter, but it's difficult to see the</source> <target state="new">This makes the function much shorter, but it's difficult to see the</target> <note /> </trans-unit> <trans-unit id="FilterShorter-Line4"> <source>order in which the data is processed.</source> <target state="new">order in which the data is processed.</target> <note /> </trans-unit> <trans-unit id="FilterWithPipes-Line1"> <source>A preferred way to write 'squareOddValuesAndAddOne' is to use F# pipe operators.</source> <target state="new">A preferred way to write 'squareOddValuesAndAddOne' is to use F# pipe operators.</target> <note /> </trans-unit> <trans-unit id="FilterWithPipes-Line2"> <source>This allows you to avoid creating intermediate results, but is much more readable</source> <target state="new">This allows you to avoid creating intermediate results, but is much more readable</target> <note /> </trans-unit> <trans-unit id="FilterWithPipes-Line3"> <source>than nesting function calls like 'squareOddValuesAndAddOneNested'</source> <target state="new">than nesting function calls like 'squareOddValuesAndAddOneNested'</target> <note /> </trans-unit> <trans-unit id="PipeInLambda-Line1"> <source>You can shorten 'squareOddValuesAndAddOnePipeline' by moving the second `List.map` call</source> <target state="new">You can shorten 'squareOddValuesAndAddOnePipeline' by moving the second `List.map` call</target> <note /> </trans-unit> <trans-unit id="PipeInLambda-Line2"> <source>into the first, using a Lambda Function.</source> <target state="new">into the first, using a Lambda Function.</target> <note /> </trans-unit> <trans-unit id="PipeInLambda-Line3"> <source>Note that pipelines are also being used inside the lambda function. F# pipe operators</source> <target state="new">Note that pipelines are also being used inside the lambda function. F# pipe operators</target> <note /> </trans-unit> <trans-unit id="PipeInLambda-Line4"> <source>can be used for single values as well. This makes them very powerful for processing data.</source> <target state="new">can be used for single values as well. This makes them very powerful for processing data.</target> <note /> </trans-unit> <trans-unit id="PipesComposition-Line1"> <source>Lastly, you can eliminate the need to explicitly take 'values' in as a parameter by using '&gt;&gt;'</source> <target state="new">Lastly, you can eliminate the need to explicitly take 'values' in as a parameter by using '&gt;&gt;'</target> <note /> </trans-unit> <trans-unit id="PipesComposition-Line2"> <source>to compose the two core operations: filtering out even numbers, then squaring and adding one.</source> <target state="new">to compose the two core operations: filtering out even numbers, then squaring and adding one.</target> <note /> </trans-unit> <trans-unit id="PipesComposition-Line3"> <source>Likewise, the 'fun x -&gt; ...' bit of the lambda expression is also not needed, because 'x' is simply</source> <target state="new">Likewise, the 'fun x -&gt; ...' bit of the lambda expression is also not needed, because 'x' is simply</target> <note /> </trans-unit> <trans-unit id="PipesComposition-Line4"> <source>being defined in that scope so that it can be passed to a functional pipeline. Thus, '&gt;&gt;' can be used</source> <target state="new">being defined in that scope so that it can be passed to a functional pipeline. Thus, '&gt;&gt;' can be used</target> <note /> </trans-unit> <trans-unit id="PipesComposition-Line5"> <source>there as well.</source> <target state="new">there as well.</target> <note /> </trans-unit> <trans-unit id="PipesComposition-Line6"> <source>The result of 'squareOddValuesAndAddOneComposition' is itself another function which takes a</source> <target state="new">The result of 'squareOddValuesAndAddOneComposition' is itself another function which takes a</target> <note /> </trans-unit> <trans-unit id="PipesComposition-Line7"> <source>list of integers as its input. If you execute 'squareOddValuesAndAddOneComposition' with a list</source> <target state="new">list of integers as its input. If you execute 'squareOddValuesAndAddOneComposition' with a list</target> <note /> </trans-unit> <trans-unit id="PipesComposition-Line8"> <source>of integers, you'll notice that it produces the same results as previous functions.</source> <target state="new">of integers, you'll notice that it produces the same results as previous functions.</target> <note /> </trans-unit> <trans-unit id="PipesComposition-Line9"> <source>This is using what is known as function composition. This is possible because functions in F#</source> <target state="new">This is using what is known as function composition. This is possible because functions in F#</target> <note /> </trans-unit> <trans-unit id="PipesComposition-Line10"> <source>use Partial Application and the input and output types of each data processing operation match</source> <target state="new">use Partial Application and the input and output types of each data processing operation match</target> <note /> </trans-unit> <trans-unit id="PipesComposition-Line11"> <source>the signatures of the functions we're using.</source> <target state="new">the signatures of the functions we're using.</target> <note /> </trans-unit> <trans-unit id="Lists-Line1"> <source>Lists are ordered, immutable, singly-linked lists. They are eager in their evaluation.</source> <target state="new">Lists are ordered, immutable, singly-linked lists. They are eager in their evaluation.</target> <note /> </trans-unit> <trans-unit id="Lists-Line2"> <source>This module shows various ways to generate lists and process lists with some functions</source> <target state="new">This module shows various ways to generate lists and process lists with some functions</target> <note /> </trans-unit> <trans-unit id="Lists-Line3"> <source>in the 'List' module in the F# Core Library.</source> <target state="new">in the 'List' module in the F# Core Library.</target> <note /> </trans-unit> <trans-unit id="Lists-Line4"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/lists</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/lists</target> <note /> </trans-unit> <trans-unit id="ListEmptyDefinition"> <source>Lists are defined using [ ... ]. This is an empty list.</source> <target state="new">Lists are defined using [ ... ]. This is an empty list.</target> <note /> </trans-unit> <trans-unit id="ListElementDefinition"> <source>This is a list with 3 elements. ';' is used to separate elements on the same line.</source> <target state="new">This is a list with 3 elements. ';' is used to separate elements on the same line.</target> <note /> </trans-unit> <trans-unit id="ListNewlineElements"> <source>You can also separate elements by placing them on their own lines.</source> <target state="new">You can also separate elements by placing them on their own lines.</target> <note /> </trans-unit> <trans-unit id="NumberList2"> <source>This is a list of integers from 1 to 1000</source> <target state="new">This is a list of integers from 1 to 1000</target> <note /> </trans-unit> <trans-unit id="ListComputation-Line1"> <source>Lists can also be generated by computations. This is a list containing</source> <target state="new">Lists can also be generated by computations. This is a list containing</target> <note /> </trans-unit> <trans-unit id="ListComputation-Line2"> <source>all the days of the year.</source> <target state="new">all the days of the year.</target> <note /> </trans-unit> <trans-unit id="PrintList2"> <source>Print the first 5 elements of 'daysList' using 'List.take'.</source> <target state="new">Print the first 5 elements of 'daysList' using 'List.take'.</target> <note /> </trans-unit> <trans-unit id="ListComputationConditional-Line1"> <source>Computations can include conditionals. This is a list containing the tuples</source> <target state="new">Computations can include conditionals. This is a list containing the tuples</target> <note /> </trans-unit> <trans-unit id="ListComputationConditional-Line2"> <source>which are the coordinates of the black squares on a chess board.</source> <target state="new">which are the coordinates of the black squares on a chess board.</target> <note /> </trans-unit> <trans-unit id="ListMap-Line1"> <source>Lists can be transformed using 'List.map' and other functional programming combinators.</source> <target state="new">Lists can be transformed using 'List.map' and other functional programming combinators.</target> <note /> </trans-unit> <trans-unit id="ListMap-Line2"> <source>This definition produces a new list by squaring the numbers in numberList, using the pipeline</source> <target state="new">This definition produces a new list by squaring the numbers in numberList, using the pipeline</target> <note /> </trans-unit> <trans-unit id="ListMap-Line3"> <source>operator to pass an argument to List.map.</source> <target state="new">operator to pass an argument to List.map.</target> <note /> </trans-unit> <trans-unit id="ListFilter-Line1"> <source>There are many other list combinations. The following computes the sum of the squares of the</source> <target state="new">There are many other list combinations. The following computes the sum of the squares of the</target> <note /> </trans-unit> <trans-unit id="ListFilter-Line2"> <source>numbers divisible by 3.</source> <target state="new">numbers divisible by 3.</target> <note /> </trans-unit> <trans-unit id="Arrays-Line1"> <source>Arrays are fixed-size, mutable collections of elements of the same type.</source> <target state="new">Arrays are fixed-size, mutable collections of elements of the same type.</target> <note /> </trans-unit> <trans-unit id="Arrays-Line2"> <source>Although they are similar to Lists (they support enumeration and have similar combinators for data processing),</source> <target state="new">Although they are similar to Lists (they support enumeration and have similar combinators for data processing),</target> <note /> </trans-unit> <trans-unit id="Arrays-Line3"> <source>they are generally faster and support fast random access. This comes at the cost of being less safe by being mutable.</source> <target state="new">they are generally faster and support fast random access. This comes at the cost of being less safe by being mutable.</target> <note /> </trans-unit> <trans-unit id="Arrays-Line4"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/arrays</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/arrays</target> <note /> </trans-unit> <trans-unit id="EmptyArray"> <source>This is The empty array. Note that the syntax is similar to that of Lists, but uses `[| ... |]` instead.</source> <target state="new">This is The empty array. Note that the syntax is similar to that of Lists, but uses `[| ... |]` instead.</target> <note /> </trans-unit> <trans-unit id="ArrayConstructionList"> <source>Arrays are specified using the same range of constructs as lists.</source> <target state="new">Arrays are specified using the same range of constructs as lists.</target> <note /> </trans-unit> <trans-unit id="ArrayConstructionRange"> <source>This is an array of numbers from 1 to 1000.</source> <target state="new">This is an array of numbers from 1 to 1000.</target> <note /> </trans-unit> <trans-unit id="ArrayComputationConstruction"> <source>This is an array containing only the words "hello" and "world".</source> <target state="new">This is an array containing only the words "hello" and "world".</target> <note /> </trans-unit> <trans-unit id="ArrayInit"> <source>This is an array initialized by index and containing the even numbers from 0 to 2000.</source> <target state="new">This is an array initialized by index and containing the even numbers from 0 to 2000.</target> <note /> </trans-unit> <trans-unit id="ArraySlicing"> <source>Sub-arrays are extracted using slicing notation.</source> <target state="new">Sub-arrays are extracted using slicing notation.</target> <note /> </trans-unit> <trans-unit id="ArrayLooping"> <source>You can loop over arrays and lists using 'for' loops.</source> <target state="new">You can loop over arrays and lists using 'for' loops.</target> <note /> </trans-unit> <trans-unit id="ArrayAssignment-Line1"> <source>You can modify the contents of an an array element by using the left arrow assignment operator.</source> <target state="new">You can modify the contents of an an array element by using the left arrow assignment operator.</target> <note /> </trans-unit> <trans-unit id="ArrayAssignment-Line2"> <source>To learn more about this operator, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/values/index#mutable-variables</source> <target state="new">To learn more about this operator, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/values/index#mutable-variables</target> <note /> </trans-unit> <trans-unit id="ArrayMap-Line1"> <source>You can transform arrays using 'Array.map' and other functional programming operations.</source> <target state="new">You can transform arrays using 'Array.map' and other functional programming operations.</target> <note /> </trans-unit> <trans-unit id="ArrayMap-Line2"> <source>The following calculates the sum of the lengths of the words that start with 'h'.</source> <target state="new">The following calculates the sum of the lengths of the words that start with 'h'.</target> <note /> </trans-unit> <trans-unit id="Sequences-Line1"> <source>Sequences are a logical series of elements, all of the same type. These are a more general type than Lists and Arrays.</source> <target state="new">Sequences are a logical series of elements, all of the same type. These are a more general type than Lists and Arrays.</target> <note /> </trans-unit> <trans-unit id="Sequences-Line2"> <source>Sequences are evaluated on-demand and are re-evaluated each time they are iterated.</source> <target state="new">Sequences are evaluated on-demand and are re-evaluated each time they are iterated.</target> <note /> </trans-unit> <trans-unit id="Sequences-Line3"> <source>An F# sequence is an alias for a .NET System.Collections.Generic.IEnumerable&lt;'T&gt;.</source> <target state="new">An F# sequence is an alias for a .NET System.Collections.Generic.IEnumerable&lt;'T&gt;.</target> <note /> </trans-unit> <trans-unit id="Sequences-Line4"> <source>Sequence processing functions can be applied to Lists and Arrays as well.</source> <target state="new">Sequence processing functions can be applied to Lists and Arrays as well.</target> <note /> </trans-unit> <trans-unit id="Sequences-Line5"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/sequences</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/sequences</target> <note /> </trans-unit> <trans-unit id="EmptySequence"> <source>This is the empty sequence.</source> <target state="new">This is the empty sequence.</target> <note /> </trans-unit> <trans-unit id="SequenceOfValues"> <source>This a sequence of values.</source> <target state="new">This a sequence of values.</target> <note /> </trans-unit> <trans-unit id="OnDemandSequence"> <source>This is an on-demand sequence from 1 to 1000.</source> <target state="new">This is an on-demand sequence from 1 to 1000.</target> <note /> </trans-unit> <trans-unit id="SequenceComposition"> <source>This is a sequence producing the words "hello" and "world"</source> <target state="new">This is a sequence producing the words "hello" and "world"</target> <note /> </trans-unit> <trans-unit id="SequenceInit"> <source>This sequence producing the even numbers up to 2000.</source> <target state="new">This sequence producing the even numbers up to 2000.</target> <note /> </trans-unit> <trans-unit id="InfiniteSequence-Line1"> <source>This is an infinite sequence which is a random walk.</source> <target state="new">This is an infinite sequence which is a random walk.</target> <note /> </trans-unit> <trans-unit id="InfiniteSequence-Line2"> <source>This example uses yield! to return each element of a subsequence.</source> <target state="new">This example uses yield! to return each element of a subsequence.</target> <note /> </trans-unit> <trans-unit id="Sequence100Elements"> <source>This example shows the first 100 elements of the random walk.</source> <target state="new">This example shows the first 100 elements of the random walk.</target> <note /> </trans-unit> <trans-unit id="RecursiveFunctions-Line1"> <source>Recursive functions can call themselves. In F#, functions are only recursive</source> <target state="new">Recursive functions can call themselves. In F#, functions are only recursive</target> <note /> </trans-unit> <trans-unit id="RecursiveFunctions-Line2"> <source>when declared using 'let rec'.</source> <target state="new">when declared using 'let rec'.</target> <note /> </trans-unit> <trans-unit id="RecursiveFunctions-Line3"> <source>Recursion is the preferred way to process sequences or collections in F#.</source> <target state="new">Recursion is the preferred way to process sequences or collections in F#.</target> <note /> </trans-unit> <trans-unit id="RecursiveFunctions-Line4"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/functions/index#recursive-functions</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/functions/index#recursive-functions</target> <note /> </trans-unit> <trans-unit id="RecFunDef-Line1"> <source>This example shows a recursive function that computes the factorial of an</source> <target state="new">This example shows a recursive function that computes the factorial of an</target> <note /> </trans-unit> <trans-unit id="RecRunDef-Line2"> <source>integer. It uses 'let rec' to define a recursive function.</source> <target state="new">integer. It uses 'let rec' to define a recursive function.</target> <note /> </trans-unit> <trans-unit id="RecGcd-Line1"> <source>Computes the greatest common factor of two integers.</source> <target state="new">Computes the greatest common factor of two integers.</target> <note /> </trans-unit> <trans-unit id="RecGcd-Line2"> <source>Since all of the recursive calls are tail calls,</source> <target state="new">Since all of the recursive calls are tail calls,</target> <note /> </trans-unit> <trans-unit id="RecGcd-Line3"> <source>the compiler will turn the function into a loop,</source> <target state="new">the compiler will turn the function into a loop,</target> <note /> </trans-unit> <trans-unit id="RecGcd-Line4"> <source>which improves performance and reduces memory consumption.</source> <target state="new">which improves performance and reduces memory consumption.</target> <note /> </trans-unit> <trans-unit id="RecSumList"> <source>This example computes the sum of a list of integers using recursion.</source> <target state="new">This example computes the sum of a list of integers using recursion.</target> <note /> </trans-unit> <trans-unit id="RecSumListTail"> <source>This makes 'sumList' tail recursive, using a helper function with a result accumulator.</source> <target state="new">This makes 'sumList' tail recursive, using a helper function with a result accumulator.</target> <note /> </trans-unit> <trans-unit id="RecSumListTailInvoke-Line1"> <source>This invokes the tail recursive helper function, providing '0' as a seed accumulator.</source> <target state="new">This invokes the tail recursive helper function, providing '0' as a seed accumulator.</target> <note /> </trans-unit> <trans-unit id="RecSumListTailInvoke-Line2"> <source>An approach like this is common in F#.</source> <target state="new">An approach like this is common in F#.</target> <note /> </trans-unit> <trans-unit id="Records-Line1"> <source>Records are an aggregate of named values, with optional members (such as methods).</source> <target state="new">Records are an aggregate of named values, with optional members (such as methods).</target> <note /> </trans-unit> <trans-unit id="Records-Line2"> <source>They are immutable and have structural equality semantics.</source> <target state="new">They are immutable and have structural equality semantics.</target> <note /> </trans-unit> <trans-unit id="Records-Line3"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/records</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/records</target> <note /> </trans-unit> <trans-unit id="RecordDefinition"> <source>This example shows how to define a new record type.</source> <target state="new">This example shows how to define a new record type.</target> <note /> </trans-unit> <trans-unit id="RecordInstantiation1"> <source>This example shows how to instantiate a record type.</source> <target state="new">This example shows how to instantiate a record type.</target> <note /> </trans-unit> <trans-unit id="RecordInstantiation2"> <source>You can also do this on the same line with ';' separators.</source> <target state="new">You can also do this on the same line with ';' separators.</target> <note /> </trans-unit> <trans-unit id="UpdateRecord-Line1"> <source>This example shows how to use "copy-and-update" on record values. It creates</source> <target state="new">This example shows how to use "copy-and-update" on record values. It creates</target> <note /> </trans-unit> <trans-unit id="UpdateRecord-Line2"> <source>a new record value that is a copy of contact1, but has different values for</source> <target state="new">a new record value that is a copy of contact1, but has different values for</target> <note /> </trans-unit> <trans-unit id="UpdateRecord-Line3"> <source>the 'Phone' and 'Verified' fields.</source> <target state="new">the 'Phone' and 'Verified' fields.</target> <note /> </trans-unit> <trans-unit id="UpdateRecord-Line4"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/copy-and-update-record-expressions</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/copy-and-update-record-expressions</target> <note /> </trans-unit> <trans-unit id="ProcessRecord-Line1"> <source>This example shows how to write a function that processes a record value.</source> <target state="new">This example shows how to write a function that processes a record value.</target> <note /> </trans-unit> <trans-unit id="ProcessRecord-Line2"> <source>It converts a 'ContactCard' object to a string.</source> <target state="new">It converts a 'ContactCard' object to a string.</target> <note /> </trans-unit> <trans-unit id="RecordWithMember-Line1"> <source>This is an example of a Record with a member.</source> <target state="new">This is an example of a Record with a member.</target> <note /> </trans-unit> <trans-unit id="RecordWithMember-Line2"> <source>Members can implement object-oriented members.</source> <target state="new">Members can implement object-oriented members.</target> <note /> </trans-unit> <trans-unit id="RecordAccess"> <source>Members are accessed via the '.' operator on an instantiated type.</source> <target state="new">Members are accessed via the '.' operator on an instantiated type.</target> <note /> </trans-unit> <trans-unit id="RecordStruct-Line1"> <source>Records can also be represented as structs via the 'Struct' attribute.</source> <target state="new">Records can also be represented as structs via the 'Struct' attribute.</target> <note /> </trans-unit> <trans-unit id="RecordStruct-Line2"> <source>This is helpful in situations where the performance of structs outweighs</source> <target state="new">This is helpful in situations where the performance of structs outweighs</target> <note /> </trans-unit> <trans-unit id="RecordStruct-Line3"> <source>the flexibility of reference types.</source> <target state="new">the flexibility of reference types.</target> <note /> </trans-unit> <trans-unit id="DiscriminatedUnions-Line1"> <source>Discriminated Unions (DU for short) are values which could be a number of named forms or cases.</source> <target state="new">Discriminated Unions (DU for short) are values which could be a number of named forms or cases.</target> <note /> </trans-unit> <trans-unit id="DiscriminatedUnions-Line2"> <source>Data stored in DUs can be one of several distinct values.</source> <target state="new">Data stored in DUs can be one of several distinct values.</target> <note /> </trans-unit> <trans-unit id="DiscriminatedUnions-Line3"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/discriminated-unions</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/discriminated-unions</target> <note /> </trans-unit> <trans-unit id="CardSuit"> <source>The following represents the suit of a playing card.</source> <target state="new">The following represents the suit of a playing card.</target> <note /> </trans-unit> <trans-unit id="CardRank"> <source>A Disciminated Union can also be used to represent the rank of a playing card.</source> <target state="new">A Disciminated Union can also be used to represent the rank of a playing card.</target> <note /> </trans-unit> <trans-unit id="CardRankValue"> <source>Represents the rank of cards 2 .. 10</source> <target state="new">Represents the rank of cards 2 .. 10</target> <note /> </trans-unit> <trans-unit id="CardMember"> <source>Discriminated Unions can also implement object-oriented members.</source> <target state="new">Discriminated Unions can also implement object-oriented members.</target> <note /> </trans-unit> <trans-unit id="CardType-Line1"> <source>This is a record type that combines a Suit and a Rank.</source> <target state="new">This is a record type that combines a Suit and a Rank.</target> <note /> </trans-unit> <trans-unit id="CardType-Line2"> <source>It's common to use both Records and Disciminated Unions when representing data.</source> <target state="new">It's common to use both Records and Disciminated Unions when representing data.</target> <note /> </trans-unit> <trans-unit id="ComputeFullDeck"> <source>This computes a list representing all the cards in the deck.</source> <target state="new">This computes a list representing all the cards in the deck.</target> <note /> </trans-unit> <trans-unit id="CardToString"> <source>This example converts a 'Card' object to a string.</source> <target state="new">This example converts a 'Card' object to a string.</target> <note /> </trans-unit> <trans-unit id="PrintAllCards"> <source>This example prints all the cards in a playing deck.</source> <target state="new">This example prints all the cards in a playing deck.</target> <note /> </trans-unit> <trans-unit id="SingleCaseDu-Line1"> <source>Single-case DUs are often used for domain modeling. This can buy you extra type safety</source> <target state="new">Single-case DUs are often used for domain modeling. This can buy you extra type safety</target> <note /> </trans-unit> <trans-unit id="SingleCaseDu-Line2"> <source>over primitive types such as strings and ints.</source> <target state="new">over primitive types such as strings and ints.</target> <note /> </trans-unit> <trans-unit id="SingleCaseDu-Line3"> <source>Single-case DUs cannot be implicitly converted to or from the type they wrap.</source> <target state="new">Single-case DUs cannot be implicitly converted to or from the type they wrap.</target> <note /> </trans-unit> <trans-unit id="SingleCaseDu-Line4"> <source>For example, a function which takes in an Address cannot accept a string as that input,</source> <target state="new">For example, a function which takes in an Address cannot accept a string as that input,</target> <note /> </trans-unit> <trans-unit id="SingleCaseDu-Line5"> <source>or vive/versa.</source> <target state="new">or vive/versa.</target> <note /> </trans-unit> <trans-unit id="InstantiateSingleCaseDu"> <source>You can easily instantiate a single-case DU as follows.</source> <target state="new">You can easily instantiate a single-case DU as follows.</target> <note /> </trans-unit> <trans-unit id="UnwrapSingleCaseDu"> <source>When you need the value, you can unwrap the underlying value with a simple function.</source> <target state="new">When you need the value, you can unwrap the underlying value with a simple function.</target> <note /> </trans-unit> <trans-unit id="PrintSingleCaseDu"> <source>Printing single-case DUs is simple with unwrapping functions.</source> <target state="new">Printing single-case DUs is simple with unwrapping functions.</target> <note /> </trans-unit> <trans-unit id="DuRecursiveDef-Line1"> <source>Disciminated Unions also support recursive definitions.</source> <target state="new">Disciminated Unions also support recursive definitions.</target> <note /> </trans-unit> <trans-unit id="DuRecursiveDef-Line2"> <source>This represents a Binary Search Tree, with one case being the Empty tree,</source> <target state="new">This represents a Binary Search Tree, with one case being the Empty tree,</target> <note /> </trans-unit> <trans-unit id="DuRecursiveDef-Line3"> <source>and the other being a Node with a value and two subtrees.</source> <target state="new">and the other being a Node with a value and two subtrees.</target> <note /> </trans-unit> <trans-unit id="SearchBinaryTree-Line1"> <source>Check if an item exists in the binary search tree.</source> <target state="new">Check if an item exists in the binary search tree.</target> <note /> </trans-unit> <trans-unit id="SearchBinaryTree-Line2"> <source>Searches recursively using Pattern Matching. Returns true if it exists; otherwise, false.</source> <target state="new">Searches recursively using Pattern Matching. Returns true if it exists; otherwise, false.</target> <note /> </trans-unit> <trans-unit id="CheckLeftSubtree"> <source>Check the left subtree.</source> <target state="new">Check the left subtree.</target> <note /> </trans-unit> <trans-unit id="CheckRightSubtree"> <source>Check the right subtree.</source> <target state="new">Check the right subtree.</target> <note /> </trans-unit> <trans-unit id="BinaryTreeInsert-Line1"> <source>Inserts an item in the Binary Search Tree.</source> <target state="new">Inserts an item in the Binary Search Tree.</target> <note /> </trans-unit> <trans-unit id="BinaryTreeInsert-Line2"> <source>Finds the place to insert recursively using Pattern Matching, then inserts a new node.</source> <target state="new">Finds the place to insert recursively using Pattern Matching, then inserts a new node.</target> <note /> </trans-unit> <trans-unit id="BinaryTreeInsert-Line3"> <source>If the item is already present, it does not insert anything.</source> <target state="new">If the item is already present, it does not insert anything.</target> <note /> </trans-unit> <trans-unit id="BinaryTreeInsert-Line4"> <source>No need to insert, it already exists; return the node.</source> <target state="new">No need to insert, it already exists; return the node.</target> <note /> </trans-unit> <trans-unit id="BinaryTreeInsert-Line5"> <source>Call into left subtree.</source> <target state="new">Call into left subtree.</target> <note /> </trans-unit> <trans-unit id="BinaryTreeInsert-Line6"> <source>Call into right subtree.</source> <target state="new">Call into right subtree.</target> <note /> </trans-unit> <trans-unit id="DuStruct-Line1"> <source>Discriminated Unions can also be represented as structs via the 'Struct' attribute.</source> <target state="new">Discriminated Unions can also be represented as structs via the 'Struct' attribute.</target> <note /> </trans-unit> <trans-unit id="DuStruct-Line2"> <source>This is helpful in situations where the performance of structs outweighs</source> <target state="new">This is helpful in situations where the performance of structs outweighs</target> <note /> </trans-unit> <trans-unit id="DuStruct-Line3"> <source>the flexibility of reference types.</source> <target state="new">the flexibility of reference types.</target> <note /> </trans-unit> <trans-unit id="DuStruct-Line4"> <source>However, there are two important things to know when doing this:</source> <target state="new">However, there are two important things to know when doing this:</target> <note /> </trans-unit> <trans-unit id="DuStruct-Line5"> <source>1. A struct DU cannot be recursively-defined.</source> <target state="new">1. A struct DU cannot be recursively-defined.</target> <note /> </trans-unit> <trans-unit id="DuStruct-Line6"> <source>2. A struct DU must have unique names for each of its cases.</source> <target state="new">2. A struct DU must have unique names for each of its cases.</target> <note /> </trans-unit> <trans-unit id="PatternMatching-Line1"> <source>Pattern Matching is a feature of F# that allows you to utilize Patterns,</source> <target state="new">Pattern Matching is a feature of F# that allows you to utilize Patterns,</target> <note /> </trans-unit> <trans-unit id="PatternMatching-Line2"> <source>which are a way to compare data with a logical structure or structures,</source> <target state="new">which are a way to compare data with a logical structure or structures,</target> <note /> </trans-unit> <trans-unit id="PatternMatching-Line3"> <source>decompose data into constituent parts, or extract information from data in various ways.</source> <target state="new">decompose data into constituent parts, or extract information from data in various ways.</target> <note /> </trans-unit> <trans-unit id="PatternMatching-Line4"> <source>You can then dispatch on the "shape" of a pattern via Pattern Matching.</source> <target state="new">You can then dispatch on the "shape" of a pattern via Pattern Matching.</target> <note /> </trans-unit> <trans-unit id="PatternMatching-Line5"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/pattern-matching</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/pattern-matching</target> <note /> </trans-unit> <trans-unit id="PersonRecord"> <source>A record for a person's first and last name</source> <target state="new">A record for a person's first and last name</target> <note /> </trans-unit> <trans-unit id="EmployeeDu"> <source>A Discriminated Union of 3 different kinds of employees</source> <target state="new">A Discriminated Union of 3 different kinds of employees</target> <note /> </trans-unit> <trans-unit id="CountEmployees-Line1"> <source>Count everyone underneath the employee in the management hierarchy,</source> <target state="new">Count everyone underneath the employee in the management hierarchy,</target> <note /> </trans-unit> <trans-unit id="CountEmployees-Line2"> <source>including the employee.</source> <target state="new">including the employee.</target> <note /> </trans-unit> <trans-unit id="FindDave-Line1"> <source>Find all managers/executives named "Dave" who do not have any reports.</source> <target state="new">Find all managers/executives named "Dave" who do not have any reports.</target> <note /> </trans-unit> <trans-unit id="FindDave-Line2"> <source>This uses the 'function' shorthand to as a lambda expression.</source> <target state="new">This uses the 'function' shorthand to as a lambda expression.</target> <note /> </trans-unit> <trans-unit id="MatchEmptyList"> <source>[] matches an empty list.</source> <target state="new">[] matches an empty list.</target> <note /> </trans-unit> <trans-unit id="MatchWildcard-Line1"> <source>'_' is a wildcard pattern that matches anything.</source> <target state="new">'_' is a wildcard pattern that matches anything.</target> <note /> </trans-unit> <trans-unit id="MatchWildCard-Line2"> <source>This handles the "or else" case.</source> <target state="new">This handles the "or else" case.</target> <note /> </trans-unit> <trans-unit id="MatchShorthand-Line1"> <source>You can also use the shorthand function construct for pattern matching,</source> <target state="new">You can also use the shorthand function construct for pattern matching,</target> <note /> </trans-unit> <trans-unit id="MatchShorthand-Line2"> <source>which is useful when you're writing functions which make use of Partial Application.</source> <target state="new">which is useful when you're writing functions which make use of Partial Application.</target> <note /> </trans-unit> <trans-unit id="ParseHelpers"> <source>Define some more functions which parse with the helper function.</source> <target state="new">Define some more functions which parse with the helper function.</target> <note /> </trans-unit> <trans-unit id="ActivePatterns-Line1"> <source>Active Patterns are another powerful construct to use with pattern matching.</source> <target state="new">Active Patterns are another powerful construct to use with pattern matching.</target> <note /> </trans-unit> <trans-unit id="ActivePatterns-Line2"> <source>They allow you to partition input data into custom forms, decomposing them at the pattern match call site.</source> <target state="new">They allow you to partition input data into custom forms, decomposing them at the pattern match call site.</target> <note /> </trans-unit> <trans-unit id="ActivePatterns-Line3"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/active-patterns</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/active-patterns</target> <note /> </trans-unit> <trans-unit id="MatchActivePattern"> <source>Pattern Matching via 'function' keyword and Active Patterns often looks like this.</source> <target state="new">Pattern Matching via 'function' keyword and Active Patterns often looks like this.</target> <note /> </trans-unit> <trans-unit id="PrintParse"> <source>Call the printer with some different values to parse.</source> <target state="new">Call the printer with some different values to parse.</target> <note /> </trans-unit> <trans-unit id="Option-Line1"> <source>Option values are any kind of value tagged with either 'Some' or 'None'.</source> <target state="new">Option values are any kind of value tagged with either 'Some' or 'None'.</target> <note /> </trans-unit> <trans-unit id="Option-Line2"> <source>They are used extensively in F# code to represent the cases where many other</source> <target state="new">They are used extensively in F# code to represent the cases where many other</target> <note /> </trans-unit> <trans-unit id="Option-Line3"> <source>languages would use null references.</source> <target state="new">languages would use null references.</target> <note /> </trans-unit> <trans-unit id="Option-Line4"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/options</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/options</target> <note /> </trans-unit> <trans-unit id="ZipCode"> <source>First, define a zipcode defined via Single-case Discriminated Union.</source> <target state="new">First, define a zipcode defined via Single-case Discriminated Union.</target> <note /> </trans-unit> <trans-unit id="Customer"> <source>Next, define a type where the ZipCode is optional.</source> <target state="new">Next, define a type where the ZipCode is optional.</target> <note /> </trans-unit> <trans-unit id="ShippingCalculator-Line1"> <source>Next, define an interface type that represents an object to compute the shipping zone for the customer's zip code,</source> <target state="new">Next, define an interface type that represents an object to compute the shipping zone for the customer's zip code,</target> <note /> </trans-unit> <trans-unit id="ShippingCalculator-Line2"> <source>given implementations for the 'getState' and 'getShippingZone' abstract methods.</source> <target state="new">given implementations for the 'getState' and 'getShippingZone' abstract methods.</target> <note /> </trans-unit> <trans-unit id="CalcShippingZone-Line1"> <source>Next, calculate a shipping zone for a customer using a calculator instance.</source> <target state="new">Next, calculate a shipping zone for a customer using a calculator instance.</target> <note /> </trans-unit> <trans-unit id="CalcShippingZone-Line2"> <source>This uses combinators in the Option module to allow a functional pipeline for</source> <target state="new">This uses combinators in the Option module to allow a functional pipeline for</target> <note /> </trans-unit> <trans-unit id="CalcShippingZone-Line3"> <source>transforming data with Optionals.</source> <target state="new">transforming data with Optionals.</target> <note /> </trans-unit> <trans-unit id="UnitsOfMeasure-Line1"> <source>Units of measure are a way to annotate primitive numeric types in a type-safe way.</source> <target state="new">Units of measure are a way to annotate primitive numeric types in a type-safe way.</target> <note /> </trans-unit> <trans-unit id="UnitsOfMeasure-Line2"> <source>You can then perform type-safe arithmetic on these values.</source> <target state="new">You can then perform type-safe arithmetic on these values.</target> <note /> </trans-unit> <trans-unit id="UnitsOfMeasure-Line3"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/units-of-measure</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/units-of-measure</target> <note /> </trans-unit> <trans-unit id="CommonUnits"> <source>First, open a collection of common unit names</source> <target state="new">First, open a collection of common unit names</target> <note /> </trans-unit> <trans-unit id="DefineUnitConstant"> <source>Define a unitized constant</source> <target state="new">Define a unitized constant</target> <note /> </trans-unit> <trans-unit id="MileUnit"> <source>Next, define a new unit type</source> <target state="new">Next, define a new unit type</target> <note /> </trans-unit> <trans-unit id="MileToMeter"> <source>Conversion factor mile to meter.</source> <target state="new">Conversion factor mile to meter.</target> <note /> </trans-unit> <trans-unit id="DefineMileConstant"> <source>Define a unitized constant</source> <target state="new">Define a unitized constant</target> <note /> </trans-unit> <trans-unit id="ComputeMileToMeter"> <source>Compute metric-system constant</source> <target state="new">Compute metric-system constant</target> <note /> </trans-unit> <trans-unit id="PrintUnitsOfMeasure"> <source>Values using Units of Measure can be used just like the primitive numeric type for things like printing.</source> <target state="new">Values using Units of Measure can be used just like the primitive numeric type for things like printing.</target> <note /> </trans-unit> <trans-unit id="Classes-Line1"> <source>Classes are a way of defining new object types in F#, and support standard Object-oriented constructs.</source> <target state="new">Classes are a way of defining new object types in F#, and support standard Object-oriented constructs.</target> <note /> </trans-unit> <trans-unit id="Classes-Line2"> <source>They can have a variety of members (methods, properties, events, etc.)</source> <target state="new">They can have a variety of members (methods, properties, events, etc.)</target> <note /> </trans-unit> <trans-unit id="Classes-Line3"> <source>To learn more about Classes, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/classes</source> <target state="new">To learn more about Classes, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/classes</target> <note /> </trans-unit> <trans-unit id="Classes-Line4"> <source>To learn more about Members, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/members</source> <target state="new">To learn more about Members, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/members</target> <note /> </trans-unit> <trans-unit id="Vector-Line1"> <source>A simple two-dimensional Vector class.</source> <target state="new">A simple two-dimensional Vector class.</target> <note /> </trans-unit> <trans-unit id="Vector-Line2"> <source>The class's constructor is on the first line,</source> <target state="new">The class's constructor is on the first line,</target> <note /> </trans-unit> <trans-unit id="Vector-Line3"> <source>and takes two arguments: dx and dy, both of type 'double'.</source> <target state="new">and takes two arguments: dx and dy, both of type 'double'.</target> <note /> </trans-unit> <trans-unit id="ClassInternalField-Line1"> <source>This internal field stores the length of the vector, computed when the</source> <target state="new">This internal field stores the length of the vector, computed when the</target> <note /> </trans-unit> <trans-unit id="ClassInternalField-Line2"> <source>object is constructed</source> <target state="new">object is constructed</target> <note /> </trans-unit> <trans-unit id="ThisKeyword-Line1"> <source>'this' specifies a name for the object's self identifier.</source> <target state="new">'this' specifies a name for the object's self identifier.</target> <note /> </trans-unit> <trans-unit id="ThisKeyword-Line2"> <source>In instance methods, it must appear before the member name.</source> <target state="new">In instance methods, it must appear before the member name.</target> <note /> </trans-unit> <trans-unit id="MemberMethod"> <source>This member is a method. The previous members were properties.</source> <target state="new">This member is a method. The previous members were properties.</target> <note /> </trans-unit> <trans-unit id="InstantiateClass"> <source>This is how you instantiate the Vector2D class.</source> <target state="new">This is how you instantiate the Vector2D class.</target> <note /> </trans-unit> <trans-unit id="ScaledVector"> <source>Get a new scaled vector object, without modifying the original object.</source> <target state="new">Get a new scaled vector object, without modifying the original object.</target> <note /> </trans-unit> <trans-unit id="GenericClasses-Line1"> <source>Generic classes allow types to be defined with respect to a set of type parameters.</source> <target state="new">Generic classes allow types to be defined with respect to a set of type parameters.</target> <note /> </trans-unit> <trans-unit id="GenericClasses-Line2"> <source>In the following, 'T is the type parameter for the class.</source> <target state="new">In the following, 'T is the type parameter for the class.</target> <note /> </trans-unit> <trans-unit id="GenericClasses-Line3"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/generics/</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/generics/</target> <note /> </trans-unit> <trans-unit id="InternalField"> <source>This internal field store the states in a list.</source> <target state="new">This internal field store the states in a list.</target> <note /> </trans-unit> <trans-unit id="AddElement"> <source>Add a new element to the list of states.</source> <target state="new">Add a new element to the list of states.</target> <note /> </trans-unit> <trans-unit id="MutableAssignment"> <source>use the '&lt;-' operator to mutate the value.</source> <target state="new">use the '&lt;-' operator to mutate the value.</target> <note /> </trans-unit> <trans-unit id="History"> <source>Get the entire list of historical states.</source> <target state="new">Get the entire list of historical states.</target> <note /> </trans-unit> <trans-unit id="Current"> <source>Get the latest state.</source> <target state="new">Get the latest state.</target> <note /> </trans-unit> <trans-unit id="InferredTypeParameter"> <source>An 'int' instance of the state tracker class. Note that the type parameter is inferred.</source> <target state="new">An 'int' instance of the state tracker class. Note that the type parameter is inferred.</target> <note /> </trans-unit> <trans-unit id="AddState"> <source>Add a state</source> <target state="new">Add a state</target> <note /> </trans-unit> <trans-unit id="Interfaces-Line1"> <source>Interfaces are object types with only 'abstract' members.</source> <target state="new">Interfaces are object types with only 'abstract' members.</target> <note /> </trans-unit> <trans-unit id="Interfaces-Line2"> <source>Object types and object expressions can implement interfaces.</source> <target state="new">Object types and object expressions can implement interfaces.</target> <note /> </trans-unit> <trans-unit id="Interfaces-Line3"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/interfaces</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/interfaces</target> <note /> </trans-unit> <trans-unit id="IDisposable"> <source>This is a type that implements IDisposable.</source> <target state="new">This is a type that implements IDisposable.</target> <note /> </trans-unit> <trans-unit id="IDisposableImplementation"> <source>This is the implementation of IDisposable members.</source> <target state="new">This is the implementation of IDisposable members.</target> <note /> </trans-unit> <trans-unit id="IDisposableObjectExpression-Line1"> <source>This is an object that implements IDisposable via an Object Expression</source> <target state="new">This is an object that implements IDisposable via an Object Expression</target> <note /> </trans-unit> <trans-unit id="IDisposableObjectExpression-Line2"> <source>Unlike other languages such as C# or Java, a new type definition is not needed</source> <target state="new">Unlike other languages such as C# or Java, a new type definition is not needed</target> <note /> </trans-unit> <trans-unit id="IDisposableObjectExpression-Line3"> <source>to implement an interface.</source> <target state="new">to implement an interface.</target> <note /> </trans-unit> <trans-unit id="Parallel-Line1"> <source>The FSharp.Core library defines a range of parallel processing functions. Here</source> <target state="new">The FSharp.Core library defines a range of parallel processing functions. Here</target> <note /> </trans-unit> <trans-unit id="Parallel-Line2"> <source>you use some functions for parallel processing over arrays.</source> <target state="new">you use some functions for parallel processing over arrays.</target> <note /> </trans-unit> <trans-unit id="Parallel-Line3"> <source>To learn more, see: https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/array.parallel-module-%5Bfsharp%5D</source> <target state="new">To learn more, see: https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/array.parallel-module-%5Bfsharp%5D</target> <note /> </trans-unit> <trans-unit id="InputArray"> <source>First, an array of inputs.</source> <target state="new">First, an array of inputs.</target> <note /> </trans-unit> <trans-unit id="ExpensiveFunction"> <source>Next, define a functions that does some CPU intensive computation.</source> <target state="new">Next, define a functions that does some CPU intensive computation.</target> <note /> </trans-unit> <trans-unit id="ParallelMap"> <source>Next, do a parallel map over a large input array.</source> <target state="new">Next, do a parallel map over a large input array.</target> <note /> </trans-unit> <trans-unit id="PrintParallel"> <source>Next, print the results.</source> <target state="new">Next, print the results.</target> <note /> </trans-unit> <trans-unit id="Events-Line1"> <source>Events are a common idiom for .NET programming, especially with WinForms or WPF applications.</source> <target state="new">Events are a common idiom for .NET programming, especially with WinForms or WPF applications.</target> <note /> </trans-unit> <trans-unit id="Events-Line2"> <source>To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/members/events</source> <target state="new">To learn more, see: https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/members/events</target> <note /> </trans-unit> <trans-unit id="SimpleEvent"> <source>First, create instance of Event object that consists of subscription point (event.Publish) and event trigger (event.Trigger).</source> <target state="new">First, create instance of Event object that consists of subscription point (event.Publish) and event trigger (event.Trigger).</target> <note /> </trans-unit> <trans-unit id="AddEventHandler1"> <source>Next, add handler to the event.</source> <target state="new">Next, add handler to the event.</target> <note /> </trans-unit> <trans-unit id="TriggerEvent"> <source>Next, trigger the event.</source> <target state="new">Next, trigger the event.</target> <note /> </trans-unit> <trans-unit id="EventWithArgs"> <source>Next, create an instance of Event that follows standard .NET convention: (sender, EventArgs).</source> <target state="new">Next, create an instance of Event that follows standard .NET convention: (sender, EventArgs).</target> <note /> </trans-unit> <trans-unit id="AddEventHandler2"> <source>Next, add a handler for this new event.</source> <target state="new">Next, add a handler for this new event.</target> <note /> </trans-unit> <trans-unit id="TriggerEventWithArgs"> <source>Next, trigger this event (note that sender argument should be set).</source> <target state="new">Next, trigger this event (note that sender argument should be set).</target> <note /> </trans-unit> </body> </file> </xliff>