Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Com o foco para o algoritmo quântico sendo mais voltado para o que deve ser alcançado do que para uma representação de problemas em termos de estruturas de dados, ter uma perspetiva mais funcional no design de linguagem é uma escolha natural. Ao mesmo tempo, o sistema de tipos é um mecanismo poderoso que pode ser usado para análise de programas e outras verificações em 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 pode estar acostumado a partir de linguagens clássicas como C# ou Java. Também adotamos uma abordagem um tanto pragmática fazendo progressos incrementais, de modo que certas construções ainda não estão totalmente integradas ao sistema tipo. Um exemplo disso são os functores, que podem ser usados dentro de expressões, mas ainda não têm uma representação no sistema de tipos. Correspondentemente, eles não podem ser atribuídos ou passados como argumentos, semelhante ao caso de chamadas parametrizadas do tipo. Esperamos fazer progressos incrementais na extensão do sistema de tipo para ser mais completo e equilibrar as necessidades imediatas com planos de longo prazo.
Tipos Disponíveis
Todos os tipos de Q# são imutáveis.
| Tipo | Descrição |
|---|---|
Unit |
Representa um tipo singleton cujo único valor é (). |
Int |
Representa um inteiro assinado de 64 bits. Os valores variam de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. |
BigInt |
Representa valores de inteiros assinados de qualquer tamanho. |
Double |
Representa um número de ponto flutuante de 64 bits de precisão dupla. Os valores variam de -1,79769313486232e308 a 1,79769313486232e308, bem como NaN (não um número). |
Bool |
Representa valores de booleanos. Os valores possíveis são true ou false. |
String |
Representa 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 endereçada.
Os valores do tipo Qubit são instanciados por meio de alocação. |
Result |
Representa o resultado de uma medição projetiva nos espaços próprios de um operador quântico com autovalores ±1. Possíveis valores de são Zero ou One. |
Pauli |
Representa uma matriz Pauli de qubit único. Possíveis valores de são PauliI, PauliX, PauliYou PauliZ. |
Range |
Representa uma sequência ordenada de valores de Int igualmente espaçados.
Os 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 tipos diferentes. As tuplas que contêm um único elemento são equivalentes ao elemento que contêm. |
struct |
Representa um tipo definido pelo usuário que consiste em itens nomeados de diferentes tipos. Os valores são instanciados ao declarar uma nova instância. |
| Funcionamento | Representa uma não determinística chamável que usa um argumento de entrada (possivelmente com valor de tupla) e retorna uma saída (possivelmente com valor de tupla). Chamadas para 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 chamável que usa um argumento de entrada (possivelmente com valor de tupla) e retorna uma saída (possivelmente com valor de tupla). Chamadas para funcionar valores não têm efeitos colaterais e a saída será sempre a mesma dada a mesma entrada. |