  We propose a quantum programming language that generalizes the
$\lambda$-calculus. The language is non-linear; duplicated variables denote,
not cloning of quantum data, but sharing a qubit's state; that is, producing an
entangled pair of qubits whose amplitudes are identical with respect to a
chosen basis. The language has two abstraction operators, $\zeta$ and $\xi$,
corresponding to the Z- and X-bases; each abstraction operator is also
parameterised by a phase, indicating a rotation that is applied to the input
before it is shared. We give semantics for the language in the ZX-calculus and
prove its equational theory sound. We show how this language can provide a good
representation of higher-order functions in the quantum world.
