Andrew Browne


Software Architect at SEEK

Andrew has a particular interest in both strongly typed functional programming and event sourcing for producing systems that are both correct and easy to reason about. With a long history as a .net developer he has had great success introducing C# developers to functional programming through F#. Recently he’s been spending more time working with Haskell.

YOW! Lambda Jam 2015 Brisbane

Lets see what we can do! with F# Computation Expressions


All F# developers will be familiar with:

  • seq expressions that allow imperative looking code to compute lazy sequences of data on demand.
  • async blocks that enable asynchronous operations to be composed together.

Rather than build constructs like seq and async into the language F# has built them on top of a more general feature: computation expressions. This decision enables developers to build their own expression languages for composable abstractions using familiar syntax. This talk will explore the power of computation expressions to deal with a range of real-world problem domains. Examples will include:

  • Composing computations that fail
  • Asynchronous paged data sources
  • Building typesafe domain specific languages that be can interpreted at runtime

By writing programs this way we can separate the pure problem domain from the underlying details of the computations.