  A remarkable difference between quantum and classical programs is that the
control flow of the former can be either classical or quantum. One of the key
issues in the theory of quantum programming languages is defining and
understanding quantum control flow. A functional language with quantum control
flow was defined by Altenkirch and Grattage [\textit{Proc. LICS'05}, pp.
249-258]. This paper extends their work, and we introduce a general quantum
control structure by defining three new quantum program constructs, namely
quantum guarded command, quantum choice and quantum recursion. We clarify the
relation between quantum choices and probabilistic choices. An interesting
difference between quantum recursions with classical control flows and with
quantum control flows is revealed.
