Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Com o foco para o algoritmo quântico sendo mais para o que deve ser alcançado em vez de em uma representação de problema em termos de estruturas de dados, tomar uma perspectiva mais funcional sobre o design de linguagem é uma escolha natural. Ao mesmo tempo, o sistema de tipos é um mecanismo poderoso que pode ser usado para análise de programa e outras verificações de tempo de compilação que facilitam a formulação de código robusto.
No geral, o sistema de tipo Q# é bastante minimalista, no sentido de que não há uma noção explícita de classes ou interfaces como se poderia usar em linguagens clássicas como C# ou Java. Também tomamos uma abordagem um tanto pragmática fazendo progressos incrementais, de modo que certas construções ainda não estejam totalmente integradas ao sistema de tipos. Um exemplo disso são os functors, que podem ser usados em expressões, mas ainda não têm uma representação no sistema de tipos. Correspondentemente, no momento, eles não podem ser atribuídos ou passados como argumentos, como é o caso de callables parametrizados do tipo. Esperamos fazer progressos incrementais na extensão do sistema de tipos para ser mais completo e equilibrar as necessidades imediatas com planos de longo prazo.
Tipos disponíveis
Todos os tipos em Q# são imutáveis.
| Tipo | Descrição |
|---|---|
Unit |
Representa um tipo singleton cujo único valor é (). |
Int |
Representa um inteiro com sinal de 64 bits. Valores intervalo de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. |
BigInt |
Representa valores inteiros com sinal de qualquer tamanho. |
Double |
Representa um número de ponto flutuante de precisão dupla de 64 bits. Valores intervalo de -1,79769313486232e308 a 1,79769313486232e308, bem como NaN (não um número). |
Bool |
Representa valores boolianos . Os possíveis valores são true ou false. |
String |
Representa o texto como valores que consistem em uma sequência de unidades de código UTF-16. |
Qubit |
Representa um identificador opaco pelo qual a memória quântica virtual pode ser tratada.
Valores do tipo Qubit são instanciados por meio da alocação. |
Result |
Representa o resultado de uma medida projetiva nos eigenspaces de um operador quântico com eigenvalues ±1. Os possíveis valores de são Zero ou One. |
Pauli |
Representa uma matriz Pauli de qubit único. Os possíveis valores de são PauliI, PauliX, PauliYou PauliZ. |
Range |
Representa uma sequência ordenada de valores de Int igualmente espaçados.
Valores podem representar sequências em ordem crescente ou decrescente. |
| Matriz | Representa valores que cada um contém uma sequência de valores do mesmo tipo. |
| Tupla | Representa valores que cada um contém um número fixo de itens de diferentes tipos. Tuplas que contêm um único elemento são equivalentes ao elemento que contêm. |
struct |
Representa um tipo definido pelo usuário consistindo em itens nomeados de diferentes tipos. valores são instanciados ao declarar uma nova instância. |
| Operação | Representa um não determinístico que usa um argumento de entrada (possivelmente com valor de tupla) e retorna uma saída (possivelmente com valor de tupla). As chamadas para a operação valores podem ter efeitos colaterais e a saída pode variar para cada chamada, mesmo quando invocada com o mesmo argumento. |
| Função | Representa um determinístico que usa um argumento de entrada (possivelmente com valor de tupla) e retorna uma saída (possivelmente com valor de tupla). As chamadas para funcionar valores não têm efeitos colaterais e a saída sempre será a mesma dada a mesma entrada. |