Я работаю с Q # над общей реализацией поиска c grover, и я хотел определить пользовательский тип Oracle
newtype ModelOracle = ((Qubit[], Qubit[], Int[], Qubit) => Unit);
// ...
function GroverMaxMatchingOracle(search_set: (Int,Int)[], vertices: Int[], marked_pts: Bool[]): ModelOracle {
return ModelOracle(ApplyMaxMatchingOracle(_,_,_,_,search_set, vertices, marked_pts));
}
, который будет соответствовать моей модели. Но когда я пытаюсь использовать его (вроде так же, как они используют StateOracle
в образце DatabaseSearch), я получаю сообщение о том, что новый тип ModelOracle
не является допустимой операцией
fail: Microsoft.Quantum.IQSharp.Workspace[0]
QS5021: The type of the expression must be a function or operation type. The given expression is of type OracleHelper.ModelOracle.
Что я ошибаюсь в типах здесь?