Abstracts for Talks

Abstracts for Talks

The Arpeggigon: A Functional Reactive Musical Automaton

(Haskell in Leipzig 2017, Leipzig, Germany, 26–27 October 2017)

The Arpeggigon is an interactive cellular automaton for composing groove-based music. It is a hexagonal grid laid out as a Harmonic Table where moving one step in each of the six possible directions corresponds to a musically meaningful interval. The automaton is configured by placing different types of tokens on the grid. When the automaton runs, so called play heads bounce between these tokens in a pinball-like manner, and a sound is made or some other action takes place whenever a play head hits a token.

The Arpeggigon is implemented in Haskell using the frameworks Functional Reactive Programming (FRP) and Reactive Values and Relations. The talk focuses on how FRP and its capabilities for handling hybrid (discrete and continuous) time aligns with the temporal and declarative nature of music, thus facilitating developing this kind of application, and by extension applications in domains with similar traits, and how Reactive Values and Relations provide a bridge between the purely functional FRP core of the application and the imperative outside world in a manner that has a relatively declarative reading yet easily accommodates imperative aspects where needed.

Links:


The Arpeggigon: A Functional Reactive Musical Automaton

(Haskell eXchange 2017, London, UK, 12–13 October 2017)

The Arpeggigon is an interactive cellular automaton for composing groove-based music. It is a hexagonal grid laid out as a Harmonic Table where moving one step in each of the six possible directions corresponds to a musically meaningful interval. The automaton is configured by placing different types of tokens on the grid. When the automaton runs, so called play heads bounce between these tokens in a pinball-like manner, and a sound is made or some other action takes place whenever a play head hits a token.

The Arpeggigon is implemented in Haskell using the frameworks Functional Reactive Programming (FRP) and Reactive Values and Relations. The talk focuses on how FRP and its capabilities for handling hybrid (discrete and continuous) time aligns with the temporal and declarative nature of music, thus facilitating developing this kind of application, and by extension applications in domains with similar traits, and how Reactive Values and Relations provide a bridge between the purely functional FRP core of the application and the imperative outside world in a manner that has a relatively declarative reading yet easily accommodates imperative aspects where needed.

Links:


The Arpeggigon: A Functional Reactive Musical Automaton

(London Haskell Meetup, London, UK, 28 June 2017)

The Arpeggigon is an interactive cellular automaton for composing groove-based music. It is a hexagonal grid laid out as a Harmonic Table where moving one step in each of the six possible directions corresponds to a musically meaningful interval. The automaton is configured by placing different types of tokens on the grid. When the automaton runs, so called play heads bounce between these tokens in a pinball-like manner, and a sound is made or some other action takes place whenever a play head hits a token.

The Arpeggigon is implemented in Haskell using the frameworks Functional Reactive Programming (FRP) and Reactive Values and Relations. The talk focuses on how FRP and its capabilities for handling hybrid (discrete and continuous) time aligns with the temporal and declarative nature of music, thus facilitating developing this kind of application, and by extension applications in domains with similar traits, and how Reactive Values and Relations provide a bridge between the purely functional FRP core of the application and the imperative outside world in a manner that has a relatively declarative reading yet easily accommodates imperative aspects where needed.

Links:


Ebba: An Embedded DSL for Bayesian Inference

(Standard Chartered Bank, London, UK, 31 March 2017)

A probabilistic model describes a stochastic process or system in terms of a probability distribution for the outcomes given the parameters of the model. The typical situation is that the outcomes can be observed directly, whereas the parameters cannot, and thus have to be estimated based on some particular observed outcomes. Bayesian inference is a principled way to estimate parameters of probabilistic models given observed data. Roughly, exploiting Bayes theorem, the probabilistic model is “inverted”, yielding a probability distribution for the parameters given the observations. A number of probabilistic programming languages exists that allows probabilistic models to be implemented in a way that models can be “inverted” automatically, allowing Bayesian inference to be carried out, typically through a probabilistic algorithms. However, these languages usually stand-alone implementations. In this talk, I will investigate the possibility of an embedded implementation of such a probabilistic language supporting Bayesian inference. The starting point is Baysig, a Haskell-like language developed by OpenBrain Ltd, where a probabilistic computation is represented by a monad. A model conditioned on parameters is thus a function returning a monad, and, through the Kleisli construction, an arrow. This suggests that something like arrows might be an appropriate abstraction for building an ”invertible“ model, as arrows explicitly relates inputs to outputs. This was the starting point for Ebba, short for Embedded Baysig. While still very preliminary work, the initial experience with Ebba suggests this is an avenue worth further investigation.

Links:


Implementing and Optimising Functional Reactive Programming

(The London Big-O Meetup, London, UK, 14 December 2016)

This talk discusses how arrows-based Functional Reactive Programming (FRP) languages can be implemented purely functionally and how their performance can be improved, using the embedded FRP implementation Yampa as an example. The talk also considers the related notion of Commutative Causal Arrows (CCA). CCAs can be converted into a normal form related to Mealy machines resulting in substantial performance gains. In both cases the underlying ideas are to represent computations as data and reformulating programs by exploiting algebraic identities, ideas which are generally useful.

Links:


Last updated 29 October 2017.