Chapter 3. Designing function signatures and types

 

This chapter covers

  • Well-designed function signatures
  • Fine-grained control over the inputs to a function
  • Using Option to represent the possible absence of data

The principles we’ve covered so far define functional programming in general, regardless of whether you’re programming in a statically typed language like C# or a dynamically typed language like JavaScript. In this chapter, you’ll learn some functional techniques that are specific to statically typed languages: because both the functions and their arguments are typed, this opens up a whole set of interesting considerations.

Functions are the building blocks of a functional program, so getting the function signature right is paramount. And because a function signature is defined in terms of the types of its inputs and outputs, getting those types right is just as important. Type design and function signature design are really two faces of the same coin.

You may think that, after years of defining classes and interfaces, you know how to design your types and your functions. But it turns out that FP brings a number of interesting concepts to the table that can help you increase the robustness of your programs and the usability of your APIs.

3.1. Function signature design

3.2. Capturing data with data objects

3.3. Modeling the absence of data with Unit

3.4. Modeling the possible absence of data with Option

sitemap