What you will learn in F# in Action: A Revised Edition of Get Programming with F#
Chapter by chapter
Concepts explained in this book
- F#F# is a statically typed, multiparadigm programming language in the ML family that runs on the .NET platform.
- functionA function is a named or anonymous program construct that maps input values to a result and can encapsulate computation.
- type inferenceType inference is the compile-time deduction of expression and value types from available program information.
- recordA C# record is a reference or value type designed primarily for modeling data with compiler-supported value-based equality and concise initialization syntax.
- pattern matchingPattern matching is a language feature that selects behavior by testing a value against structural or value patterns and binding matched components.
- side effectA side effect is an observable change or interaction caused by a function beyond producing its return value, such as modifying external data or state.
- union typeA discriminated union is an F# type whose values are selected from a fixed set of named cases, each potentially carrying different data.
- type hintsA type hint is an editor- or environment-provided indication of the inferred or declared type associated with a source-code expression or symbol.
- optionAn option is an F# generic discriminated union representing either the presence of a value with Some or its absence with None.
- higher-order functionA higher-order function is a function that takes functions as arguments, returns a function, or both.
- mutable objectMutability is the property of data whose state can be changed after creation.
- pipelineA pipeline is a sequence of transformations in which the output of one step becomes the input of the next, applied here to HTTP requests and responses.
- tupleA tuple is a fixed-size, ordered data structure that combines values, potentially of different types, into a single composite value.
- wildcardA wildcard is a pattern or placeholder that matches a value without binding or using its contents.
- asynchronous programmingAsynchronous programming is a technique in which an operation can proceed without blocking other work while waiting for a result.
- type signatureA type signature is a notation describing the types that make up a value or expression, including the structure of composite types.
- testTest is Expecto's compositional test value, representing either an individual test or a collection of nested tests.
- pure functionFunctional purity is the property of functions having deterministic outputs for given inputs and no observable side effects.
- expressionAn expression is a program construct that evaluates to a value.
- GiraffeGiraffe is an F# web framework that provides a lightweight functional interface for building applications on ASP.NET.
- compilerA compiler is a software tool that translates source code into an executable or another lower-level representation while checking it against the language's rules.
- functional, stateless philosophyFunctional programming is a programming paradigm that emphasizes composing computations as functions and minimizing mutable state and side effects.
- type providerA JSON type provider is a compile-time mechanism that infers an F# type from a representative JSON sample and exposes the sample's structure through typed members.
- scopeA scope is a region of source code that determines the lifetime and accessibility of names and bindings.
- namespaceA namespace is a programming-language construct that groups and qualifies names to organize code and avoid naming collisions.
- unit typeUnit is an F# type representing the absence of a meaningful result while still providing a value for every expression and function.
- sequenceA sequence is an ordered, potentially lazy and forward-only series of elements, represented in .NET by the IEnumerable interface.
- mapA map operation applies a function to a value inside a computational effect and rewraps the result in that effect.
- lightweight syntaxLightweight syntax is a language syntax style that expresses common programming constructs with relatively little punctuation or boilerplate.
- separation of data and behaviorSeparation of data and behavior is a design pattern in which data structures hold state while separate functions or modules implement operations on that state.
- ExpectoExpecto is an F# testing framework for writing and running automated tests, including performance-oriented tests.
- moduleA module is a language construct that groups related declarations such as data types, values, and functions under a named scope.
- listIn F#, a list is an immutable ordered collection whose elements can be processed as a sequence.
- validationValidation is the process of checking data against rules that determine whether it is acceptable for a domain or operation.
- computation expressionA computation expression is F# syntax and builder-based semantics for sequencing computations that carry an effect such as optionality, failure, or asynchrony.
- command-line toolA console application is a program that interacts with users or other processes through a text-based terminal.
- assignmentAn assignment is an operation that binds or updates a variable with the result of an expression.
- missing valueMissing data is information that is absent, unavailable, or not provided for an expected field or value.
- result typeA result type represents either a successful value or an error value, allowing an operation to return validation failures without raising an exception.
- static typingA static type system assigns and checks types during compilation rather than primarily during program execution.
- exhaustivenessExhaustiveness checking is compile-time verification that pattern matching handles every possible case of a type.
- type systemA type system is a set of rules that assigns types to program expressions and constrains how values and operations may be combined.
- task computation expressionA task computation expression is an F# computation expression that constructs an asynchronous .NET Task computation and supports awaiting task results without blocking the current thread.
- invariantAn invariant is a condition that must remain true for a value or domain entity to be considered valid.
- F# syntaxF# syntax is the set of lexical and grammatical rules that determine how F# programs are written and parsed.
- shell scriptA script is a source-code file intended for direct or interactive execution and reuse without requiring a full application project.
- copy-and-update syntaxCopy-and-update syntax is F# syntax that creates a record value by copying fields from an existing record and overriding or adding fields.
- data transformationA data transformation is a computation that converts input data into a different value or representation.
- synchronous callA synchronous operation runs to completion in the caller's execution flow and normally keeps its thread occupied while it waits.
- cyclical dependencyA cyclical dependency is a chain of references in which declarations ultimately depend on themselves through one or more intermediate declarations.
- inner functionA nested function is a function defined inside another scope or function.
- indentationIndentation is leading whitespace in source code that can delimit or structure blocks according to a language's syntax rules.
- data typeA type is a language-level classification that specifies the kind of values an expression can represent and the operations applicable to them.
- compositionFunction composition is the operation of combining functions so that the output of one function becomes the input of another.
- List.filterList.filter is an F# library function that retains list elements satisfying a predicate function.
- List moduleThe List module is the F# library module that provides operations for processing immutable lists.
- read-execute-print loopA read-eval-print loop is an interactive environment that repeatedly reads source expressions, evaluates them, and prints their results.
- warning messageA compiler warning is a diagnostic indicating potentially unintended or discouraged source code that nevertheless remains compilable.
- model-view-updateThe Model-View-Update pattern is a unidirectional architecture in which a model holds application state, a view renders it and emits messages, and an update function produces revised state.
- anonymous recordAn anonymous record is an F# record value with named fields whose record type is inferred without an explicit named type declaration.
- statementA statement is a program construct that performs an action or controls execution without necessarily evaluating to a usable value.
- F# InteractiveFSI is F# Interactive, an interactive environment for evaluating F# code and expressions incrementally.
- reference typeA reference type is a type whose values are references to objects stored separately from the reference itself.
- value typeA value type is a type whose variables directly contain their data and whose values are copied when assigned or passed by value.
- System.Text.JsonSystem.Text.Json is the .NET library namespace providing APIs for JSON serialization and deserialization.
- consistencyLanguage consistency is the design principle of applying a small set of general constructs and symbols across multiple programming situations.
- domain modelA domain model is a software representation of the entities, relationships, rules, and behavior of a problem domain.
- ResizeArrayResizeArray is an F# type alias for a dynamically resizing .NET generic list.
- file and symbol orderingFile order is the project-defined ordering of F# source files that determines which declarations and dependencies are visible during compilation.
- comprehensionA collection comprehension is syntax for constructing a collection from generator, filtering, and transformation logic.
- mutate operatorThe mutate operator is F# syntax using <- to update a mutable binding or location.
- dependencyAn external dependency is a system or service outside an application that its code relies on, such as a database or web service.
- type argumentA generic type argument is a concrete type supplied for a parameterized generic type or function.
- .NET.NET is a software development platform that provides runtimes, libraries, and tools for building applications in multiple programming languages.
- classA class is an object-oriented programming construct that defines the structure and behavior of instances.
- conditional logicA conditional is a programming construct that selects execution or generated content based on a Boolean condition.
- nested tupleA nested tuple is a tuple containing another tuple as one of its elements.
- struct annotationA struct annotation is F# syntax using the struct keyword to specify a value-tuple representation in a type expression or construction.
- tuple deconstructionTuple deconstruction is the extraction of a tuple's elements into separate bindings or pattern components.
- project fileAn F# project file is a project configuration file that describes project metadata and the source files included in compilation.
- mutable variableThe mutable modifier declares that a field or binding may be changed after initialization.
- single-case discriminated unionA single-case discriminated union is a discriminated union with exactly one named case, typically used to create a distinct domain-specific type around another value.
- declarative programmingA declarative model specifies the desired structure or result of a user interface without directly prescribing the procedural steps to construct it.
- I/OExternal I/O is input or output involving a resource outside the program, such as a network service or database.
- bindbind is a function that applies a computation producing an optional or effectful result and avoids nesting the result within the same computational context.
- object expressionAn object expression is an F# expression that creates an object implementing specified class or interface members without requiring a separately declared type.
- Option.mapOption.map is an F# library function that applies a function to the value in a Some case and returns None unchanged, wrapping a successful result in Some.
- SAFE StackSAFE Stack is an F#-oriented web development stack combining libraries and tools from the .NET and JavaScript ecosystems.
- constructor methodA constructor is a member or function-like operation that creates and initializes an instance of a type.
- curryingA curried function is a function represented as a sequence of single-argument functions, allowing arguments to be supplied incrementally.
- async/awaitAsync/await is a language feature and control-flow pattern for expressing asynchronous operations in sequential-looking syntax that suspends while awaiting a result.
- pipe operatorThe F# pipeline operator (|>) passes the value of its left-hand expression as an argument to the function on its right.
- ElmishElmish is an F# library implementing the Elm-style Model-View-Update architecture for user interfaces and application state management.
- structural equalityStructural equality determines equality by recursively comparing the contents of corresponding values and their nested fields.
- routeA route is a web-application rule that associates request properties such as an HTTP method and URI path with a handler.
- collectionA collection is a data structure or abstraction that groups multiple elements for traversal and processing.
- async blockAn async block is an F# computation-expression construct that represents a deferred, repeatable asynchronous computation.
- transpilationTranspilation is source-to-source translation from one programming language into another, typically preserving a comparable level of abstraction.
- nullable typeNullable<T> is a .NET value type that represents either a value of a non-nullable value type or the absence of such a value.
- dependency rejectionThe dependency rejection pattern is a design approach that keeps internal functions independent of external dependencies by passing in simple data rather than functions or effects.
- active patternAn active pattern is an F# pattern definition that encapsulates reusable computation for determining how a value matches.
- genericsA generic type is a type defined with one or more type parameters so it can apply to values of different concrete types.
- property-based testingA property-based test is an individual automated test that evaluates one or more stated properties over generated inputs.
- schemaA schema is a formal description of the fields, structure, and types expected in a data resource.
- testListtestList is an Expecto function that constructs a composite test from a name and a collection of child tests.
- test runnerA test runner is software that discovers tests and executes them, typically reporting their results.
- FsCheckFsCheck is a .NET library for property-based testing that generates input values and checks properties against them.
- imperative programmingImperative programming is a programming paradigm that specifies computation as step-by-step commands that change program state.
- FSharp.DataFSharp.Data is an F# and .NET library that provides type providers and data-access abstractions for common external data formats and sources.
- let!let! is an F# computation-expression binding form that binds the result of an effectful computation to a name.
- exceptionAn exception is a runtime event representing an abnormal condition that interrupts normal program execution.
- data transfer objectA data transfer object is an object that carries data between software components without encapsulating domain behavior.
- race conditionA race condition is a concurrency defect in which a result depends on the timing or interleaving of competing operations.
- fire-and-forget operationA fire-and-forget operation is an asynchronous operation started without awaiting or otherwise consuming its completion or result.
- FsToolkit.ErrorHandlingFsToolkit.ErrorHandling is an open-source F# library that provides computation expressions and other helpers for working with options and results.
- option computation expressionAn option computation expression sequences computations that may produce an optional value and propagates absence without requiring explicit unwrapping.
These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.
