Chapter 7. Complex Composite Types
WHAT'S IN THIS CHAPTER?
Understanding type abbreviations
Working with enums
Creating discriminated unions
Understanding structs
Working with record types
Complex composite types serve as a bridge between the simple composite types explored in Chapter 5, such as tuples, options, and the collection types (list, array, sequence, set, and map), and the more traditional class types explored in Chapter 8. Unlike the simple composite type made up of multiple elements of a single type, the complex composite type is marked by the multiple parts that form the complex composite type, such as individual elements made up of other types.
TYPE ABBREVIATIONS
One of the drawbacks to tuples is that the tuple, in its basic form, remains unnamed — lexically speaking, it's harder to talk about passing string * string * int * float
types around than it is to talk about passing around instances of Employee.
Fortunately, F# alleviates this problem (for more than just tuples) by allowing for type abbreviations, which actually are nothing more than name declarations for existing type names:
type MenuItem = string * string * float type RestaurantMenu = MenuItem list
In all other respects, the types behave as they've done normally:
let diner : RestaurantMenu = [ ("Grand Slam", "Two eggs, two bacon, three hotcakes",2.99); ("Chicken strips", "Five strips and sauce", 3.99) ] for (name, desc, price) in diner do System.Console.WriteLine("{0} costs {1}", name, price)
It's important to note ...
Get Professional F# 2.0 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.