We introduce Qunity, a new quantum programming language designed around the central goal of treating quantum computing as a natural generalization of classical computing. Qunity presents a unified syntax where familiar programming constructs can have both quantum and classical effects. For example, one can use sum types to implement the direct sum of linear operators, exception handling syntax to implement projective measurements, and aliasing to induce entanglement. Further, Qunity takes advantage of the overlooked BQP subroutine theorem, allowing one to construct reversible subroutines from irreversible quantum algorithms through the uncomputation of "garbage" outputs. Unlike existing languages that enable quantum aspects with a separate add-on (e.g., gates added to a classical language), we unify quantum and classical computing through novel compositional semantics based on Kraus operators. We present Qunity’s syntax, type system, and denotational semantics, showing how it can cleanly express several quantum algorithms. We also outline how Qunity could be compiled to OpenQASM, demonstrating the realizability of our design.