  Priority Sesh is a library for session-typed communication in Linear Haskell
which offers strong compile-time correctness guarantees. Priority Sesh offers
two deadlock-free APIs for session-typed communication. The first guarantees
deadlock freedom by restricting the process structure to trees and forests. It
is simple and composeable, but rules out cyclic structures. The second
guarantees deadlock freedom via priorities, which allows the programmer to
safely use cyclic structures as well.
  Our library relies on Linear Haskell to guarantee linearity, which leads to
easy-to-write session types and highly idiomatic code, and lets us avoid the
complex encodings of linearity in the Haskell type system that made previous
libraries difficult to use.
