# Aliases type Receiver = fn() -> any type Sender = fn(any) fn new_channel() -> (Sender, Receiver) { queue := [] fn send(n: any) { queue.push(n) # mutate in-place } fn recv() -> any | nil { queue.pop() } (send, recv) } (send, recv) := new_channel() ( send:, recv:, )