Session types via Staging comm.mli Basic interface to build processes ex_simple.ml Simple examples ex_error.ml Example with the error message and trace choice.mli External and internal choice in processes ex_choice.ml Example with choices deleg.mli Delegation ex_deleg.ml Example with delegation loop.mli Iteration ex_loop.ml Example with looping and iteration ex_arith.ml Arithmetic server example (with iteration) Implementation setypes.ml Types and environment setypes_loc.ml With location information comm_basic.ml The implementation of basic processes comm_choice.ml Internal and external choices comm_deleg.ml The implementation of delegation comm_loop.ml The implementation of iteration ser_string.ml Basic serializer into strings Abstraction of Low-level library channel.mli Communication channel abstractions channel.ml Low-level communication library (back-end) lowcomm.mli Interface lowcomm.ml Interface with the back-end lowcomm_fifo.ml FIFO back-end lowcomm_fifo_sh.mli sh declaration (separate file: constructor restriction) locomm_sock.ml Unix Domain Socket back-end (needs work) lowcomm_run.ml Example of using low-level library common.ml Common code loc.ml Locations Canonical structures trep.ml The standard type representation and comparison canonical.ml Canonical Structures Makefile How to build the project stagedEDSL_ex.ml A simple example of a staged embedded DSL with a type system to prevent writing to closed channels and ensure all open channels are closed