Outside the block syndicate: Translating Faust's algebra of blocks to the arrows framework

Folklore has it that Faust’s algebra of blocks can be represented in Hughes’ algebra of Arrows. In this paper we formalise this understanding, showing that blocks can indeed be encoded with Causal Commutative Arrows. Whilst an interesting finding in itself, we believe that this formal translation opens up new avenues of research. For instance, recent work in functional reactive programming on well typed clocks, could provide an alternative to the dependent type approach proposed for multi-rate Faust.

[1]  Paul Hudak,et al.  The theory and practice of causal commutative arrows , 2011 .

[2]  Gérard Assayag,et al.  New computational paradigms for computer music , 2009 .

[3]  Joseph Tilbian,et al.  Stride for interactive musical instrument design , 2017, NIME.

[4]  Philip Wadler Monads for Functional Programming , 1995, Advanced Functional Programming.

[5]  Paul Hudak,et al.  Plugging a Space Leak with an Arrow , 2007, Festschrift honoring Gary Lindstrom.

[6]  Conor McBride,et al.  Applicative programming with effects , 2008, J. Funct. Program..

[7]  John Hughes,et al.  Generalising monads to arrows , 2000, Sci. Comput. Program..

[8]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[9]  Mark Grebe,et al.  Haskino: A Remote Monad for Programming the Arduino , 2016, PADL.

[10]  Ross Paterson,et al.  A new notation for arrows , 2001, ICFP '01.

[11]  Mark P. Jones Qualified Types: Theory and Practice , 1994 .

[12]  Exequiel Rivas,et al.  Notions of computation as monoids* , 2014, Journal of Functional Programming.

[13]  Dominique Fober,et al.  Syntactical and semantical aspects of Faust , 2004, Soft Comput..

[14]  Eugenio Moggi,et al.  Notions of Computation and Monads , 1991, Inf. Comput..

[15]  Ivan Perez,et al.  Rhine: FRP with type-level clocks , 2018, Haskell@ICFP.

[16]  Simon Marlow,et al.  Haskell 2010 Language Report , 2010 .

[17]  Henrik Nilsson,et al.  Functional reactive programming, refactored , 2016, Haskell.

[18]  Dominique Fober,et al.  An Algebraic approach to Block Diagram Constructions , 2002 .

[19]  Mark P. Jones Partial Evaluation for Dictionary-free Overloading , 2001 .

[20]  Paul Hudak,et al.  Arrows, Robots, and Functional Reactive Programming , 2002, Advanced Functional Programming.

[21]  Philip Wadler,et al.  The arrow calculus , 2010, J. Funct. Program..

[22]  James Stanton,et al.  The remote monad design pattern , 2015, Haskell.

[23]  P. Hudak,et al.  Causal commutative arrows , 2011, Journal of Functional Programming.

[24]  Paul Hudak,et al.  Monad transformers and modular interpreters , 1995, POPL '95.

[25]  Bart Jacobs,et al.  Under Consideration for Publication in J. Functional Programming Categorical Semantics for Arrows , 2022 .

[26]  Paul Hudak,et al.  Functional reactive animation , 1997, ICFP '97.

[27]  Paul Hudak,et al.  Building domain-specific embedded languages , 1996, CSUR.

[28]  J. Smith Signal Processing Libraries for Faust , 2012 .

[29]  Pierre Jouvelot,et al.  Signal Rate Inference for Multidimensional Faust , 2016, IFL 2016.

[30]  Philip Wadler,et al.  How to make ad-hoc polymorphism less ad hoc , 1989, POPL '89.

[31]  Andrew P. McPherson,et al.  Action-Sound Latency: Are Our Tools Fast Enough? , 2016, NIME.

[32]  Romain Michon FAUST-STK : A SET OF LINEAR AND NONLINEAR PHYSICAL MODELS FOR THE FAUST PROGRAMMING LANGUAGE , 2011 .