<

Simon Thompson

Functional programmer in Haskell and Erlang, researcher and teacher of computer science @ University of Kent

Researcher, author and teacher, based at the University of Kent. My research has covered many aspects of functional programming, including verification, tool building and testing for Erlang, Haskell and OCaml. I'm author of books on type theory, Haskell and Erlang, and run a MOOC on Erlang for FutureLearn.

Past Activities

Simon Thompson
Code Mesh LDN
07 Nov 2019
14.30 - 15.15

Marlowe: financial contracts on blockchain

Marlowe is a high-level, domain-specific language (DSL) for writing financial contracts on blockchain. Marlowe is defined by an executable semantics in Haskell, and has been implemented on the UTxO-based Cardano blockchain.

This talk will introduce Marlowe and describe its semantics, implementation and tooling as well as give examples, including some from the ACTUS financial standard. It will also address Marlowe as a Haskell DSL, and describe the choices made in designing and revising the language.

THIS TALK IN THREE WORDS

Blockchain

Functional

DSL

OBJECTIVES

To describe the design - and design tradeoffs - in building a functional DSL to work on blockchain to describe and enforce a wide class of functional contracts.

TARGET AUDIENCE

Programmers interested in DSL design, and others interested in financial smart contracts on blockchain,

Simon Thompson
Code BEAM SF 2018
16 Mar 2018
14.30 - 15.15

Making It Lazy: never evaluate anything more than once

Put some more advanced features of Erlang to work by implementing lazy evaluation. First we find a way of being non-strict, so we only evaluate things by need, and then we find a way of memoising the results. We show how to build infinite, graphical and indeed cyclic data structures, using higher-order functions, macros and ETS tables.

OBJECTIVES

Learn some advanced functional programming techniques and see how they can be implemented in Erlang.

AUDIENCE

Anyone who would like to learn some neat functional programming tricks to use in Erlang or Elixir.