Foundations of quantum programming. (2016)