Commutative monads, diagrams and knots

  • Authors:
  • Dan P. Piponi

  • Affiliations:
  • Industrial Light & Magic, San Francisco, CA, USA

  • Venue:
  • Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
  • Year:
  • 2009
  • Monads need not be endofunctors

    FOSSACS'10 Proceedings of the 13th international conference on Foundations of Software Science and Computational Structures

Quantified Score

Hi-index 0.00

Visualization

Abstract

There is certain diverse class of diagram that is found in a variety of branches of mathematics and which all share this property: there is a common scheme for translating all of these diagrams into useful functional code. These diagrams include Bayesian networks, quantum computer circuits [1], trace diagrams for multilinear algebra [2], Feynman diagrams and even knot diagrams [3]. I will show how a common thread lying behind these diagrams is the presence of a commutative monad and I will show how we can use this fact to translate these diagrams directly into Haskell code making use of do-notation for monads. I will also show a number of examples of such translated code at work and use it to solve problems ranging from Bayesian inference to the topological problem of untangling tangled strings. Along the way I hope to give a little insight into the subjects mentioned above and illustrate how a functional programming language can be a valuable tool in mathematical research and experimentation.