pub fn receive_channel<C1, C2, N, A, B>(
    cont: impl FnOnce(N) -> PartialSession<C2, B>
) -> PartialSession<C1, ReceiveChannel<A, B>> where
    N: Nat,
    A: Protocol,
    B: Protocol,
    C1: Context<Length = N>,
    C2: Context,
    C1: AppendContext<(A, ()), Appended = C2>,