F# Design Patterns