When designing software, we often need to solve numerous instances of the
same problem. When designing user-interfaces, we need to describe the layout and interaction. When financial systems, we need to describe a wide range of financial contracts or, for example, recognize different patterns in price
Domain Specific Languages (DSLs) give us a way to solve such repeating
problems. By designing a composable functional library, we can build an
expressive language for describing our problems. Using the flexible F#
syntax, we can get code that even non-programmers can understand.
In this practically oriented talk, we'll develop a number of sample DSLs,
ending with realistic examples. We'll cover both basic principles of DSL
design as well as advanced tricks, such as using the F# 3.0 query syntax.