  Choreographic programming is a concurrent paradigm in which a single global
program called a choreography describes behavior across an entire distributed
network of participants. Choreographies are easier to reason about than
separate programs running in parallel, and choreographic programming systems
can check for deadlocks statically.
  We present MultiChor, a library for writing and running choreographies as
monadic values in Haskell. Unlike prior Haskell implementations, MultiChor does
not require excess communication to handle Knowledge-of-Choice. Unlike all
prior general-purpose choreographic languages, MultiChor can express
choreographies that are polymorphic over the number of participants.
