[Haskell-cafe] Science, FRP and Haskell

Tom Nielsen tanielsen at gmail.com
Thu Oct 6 14:40:19 CEST 2011

Dear cafe,

I am please to announce that our paper on using FRP (and Haskell!) in
physiological experimentation and analysis has now been published in
Journal of the Royal Society Interface. Since most people on this list
probably don't read that journal on a regular basis, I thought a quick
note to the list would be appropriate.

The full PDF is available here:


If this link doesn't work, just email me for a copy.

I'll provide a brief summary here:

-The main point of the paper is that there is a large conceptual
overlap between FRP and the observation and analysis of physiological
data. We show that many different quantities map on to Signals or
Events (we introduce a third type scheme, Durations, similar to Events
but with a start and an end time). These types can be used not only
for data but also for meta-data. In fact, we make no distinction
between the two.

-We have developed a non-embedded functional programming language with
first-class signals and events for executing experiments defined as
functional reactive programs. A key innovation is that differential
equations can be introduced by pattern matching on the derivative of a
signal. One back-end supports the execution of some programs under a
real-time (LXRT) environment.

-We have carried out two non-trivial neurophysiology experiments to
demonstrate the generality, concision and practical usefulness of our

-All code used for data acquisition, stimulus generation and
presentation, analysis and producing figures was written in Haskell or
in programming languages implemented in Haskell.

I stress that the paper is about ideas and does not describe a mature
software package. I am reimplementing a lot of those ideas and
integrating them with Bayesian inference, such that we can analyse
data in terms of physical, probabilistic models. This more mature
language is called BAYSIG.

here is the code described in the paper, in all it's messiness:


The repository for BAYSIG is here


Both of these packages depend on a couple of unreleased cabal packages
that can be found in my github account.


More information about the Haskell-Cafe mailing list