<<< Previous speaker Next speaker >>>

Trackhost: Erik Meijer, Microsoft

Trackhost: Erik  Meijer Erik Meijer is an architect in the Microsoft SQL server division where he currently works together with the Microsoft Visual C# and the Microsoft Visual Basic language design teams on data integration in programming languages. Prior to joining Microsoft he was an associate professor at Utrecht University and adjunct professor at the Oregon Graduate Institute. Erik is one of the designers of the standard functional programming language Haskell98 and more recently the Cw language.

Presentation: "Introduction: Abstractions for Concurrency"

Track:   Abstractions for Concurrency

Time: Monday 10:15 - 10:45

Location: SAS Suecia

Abstract:

The Cw research language provides C# programmers a more pleasant world of concurrent programming. It provides a simple, declarative, and powerful model of concurrency - Join Patterns - that are applicable to both multi threaded applications and to the orchestration of asynchronous, event-based distributed applications.

Recently, join patterns have been liberated from the constraints of being tightly integrated in a programming language and made available as a library. The library is efficient and has a very simple API surface. The join library is language neutral, so the power of join patterns is now accessible to Visual Basic, and other .NET languages. Whereas in Cw join patterns were tied to class declarations, the library's join patterns are dynamic, and hence support solutions difficult to express with the static join patterns of Cw.

Password protected Download slides

Presentation: "Panel: Abstractions for Concurrency"

Track:   Abstractions for Concurrency

Time: Monday 17:00 - 17:45

Location: SAS Suecia

Presentation: "Functional Programming And Monads"

Track:   Back to the Future

Time: Wednesday 11:00 - 12:00

Location: Conference Hall

Abstract:

Monads are one of the least understood features of functional programming. This is a real pity because monads are a beautiful combination of solid theory and useful practice. However, this split personality is also the root cause of the confusion that monads cause to practitioners.

On the one hand, we can take a theoretical approach to monads, namely that

  • Monads are a scary concept from category theory.
  • Monads are a way to structure the denotational semantics of programming languages.

This results in the superstition that monads are something exceptional beyond the comprehension of normal human beings.


Conversely, we can take an applied view of monads, namely that
  • Monads are a design pattern for stitching together functions that have extra effects in addition to purely computing results from arguments.
  • Monads are a generalization of collections and standard operations on collections. Syntactic sugar in the form of monad comprehensions gives us a unified query language for any such general collecyion.

This latter approach allows us to deal with arbitrary side-effects in an otherwise purely functional language and eliminate the impedance mismatch between various data models by focusing on similarities rather than on differences between the various data models.

In this talk we will focus on the practical side of monads and show how they surface in a functional language like Haskell and in object-oriented languages such as Visual Basic and C#.

Password protected Download slides