Functor 應用程式
Functor 是可讓您存取可呼叫之特定特製化實作的處理站。 Q# 目前支援兩個函式; Adjoint
和 Controlled
,這兩者都可以套用至提供必要特製化的作業。
和 Controlled
Adjoint
函式通勤;如果 ApplyUnitary
是同時支援這兩個函式的作業,則 和 Adjoint Controlled ApplyUnitary
之間Controlled Adjoint ApplyUnitary
沒有任何差異。
兩者都有相同的型別,而且在叫用時,執行為controlled adjoint
特製化定義的實作。
Adjoint functor
如果作業ApplyUnitary
定義量子狀態的一元轉換U,Adjoint ApplyUnitary
請存取U†的實作。 Adjoint
函式是它自己的反函數,因為 (U†)† = U 依定義。 例如,Adjoint Adjoint ApplyUnitary
與 ApplyUnitary
相同。
表達式 Adjoint ApplyUnitary
是與 相同的型 ApplyUnitary
別作業;其自變數和傳回型別相同,且支援相同的函式。 如同任何作業,可以使用適合類型的自變數來叫用它。 下列表達式會將 的相鄰特製化ApplyUnitary
套用至 自變數arg
:
Adjoint ApplyUnitary(arg)
受控制函式
針對定義量子狀態的一元式轉換U的作業ApplyUnitary
,Controlled ApplyUnitary
存取套用U條件式的實作,該實作會套用在控制量子位數組中處於 |1⟩ 狀態的所有量子位。
表達式Controlled ApplyUnitary
是具有相同傳回類型和作業特性ApplyUnitary
的作業,這表示它支援相同的函式。
它會採用 類型的 (Qubit[], <TIn>)
自變數,其中 <TIn>
應取代為的 ApplyUnitary
自變數類型,並將 singleton Tuple 等價 納入考慮。
作業 | 自變數類型 | 受控自變數類型 |
---|---|---|
X | Qubit |
(Qubit[], Qubit) |
交換 | (Qubit, Qubit) |
(Qubit[], (Qubit, Qubit)) |
具體地說,如果 cs
包含量子位的數位,而且q2
是兩個量子位,q1
而且作業SWAP
如這裡所定義,則下列表達式會交換 的狀態q1
q2
;如果 中的所有量子cs
位都處於 |1⟩ 狀態:
Controlled SWAP(cs, (q1, q2))
注意
根據處於 |1 以外狀態的控件量子位,有條件地套用作業⟩可以藉由在叫用之前將適當的相鄰轉換套用至控件量子位,並在之後套用反向。 例如,在 |0⟩狀態的所有控件量子位上調理轉換,可以藉由在前後套用 X
作業來達成。 這可以使用結合來方便表示。 儘管如此,這類建構的詳細資訊在未來可能值得額外支援更精簡的語法。