Haskell developer by day, Haskell developer by night. Explorer of the uncharted territories. Father, husband, cats herder.
In the late 1960s it was already well established fact, that any arbitrary complex programming language can be represented as an evidently tiner "core" language. Lambda calculus or Turing machines are one of the well known examples of such languages. However they all shared common constrain - ability to model only sequential computation. With rise of distributed systems and multicore architecutres, industry needed a new formalism to represent calculations that run concurrently. This talk is an introduction to process calculus - a family of related formalisms that model concurrent systems. They describe high-level interactions between a collection of independent processes and also algebraic laws that allow process descriptions to be analyzed and reasoned about their equivalences.
This talk describes in detail two process calculi: Pi Calculus and its natural successor Rho Calculus. Haskell library called distributed-process (also known as Cloud Haskell) will be used to show live code examples. Cloud Haskell is a library which allows message-passing programming style, similar to the one known in Erlang or Akka (Scala). Attendees should be familiar with simple Haskell syntax and Lambda Calculus, however some limited introduction to both the language and the formalism will be covered as well.Slides