Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Con el objetivo de que el algoritmo cuántico sea más hacia lo que se debe lograr en lugar de en una representación de problemas en términos de estructuras de datos, tomar una perspectiva más funcional sobre el diseño del lenguaje es una opción natural. Al mismo tiempo, el sistema de tipos es un mecanismo eficaz que se puede usar para el análisis de programas y otras comprobaciones en tiempo de compilación que facilitan la formulación de código sólido.
En general, el sistema de tipos de Q# es bastante minimalista, en el sentido de que no hay una noción explícita de clases o interfaces, ya que se puede usar para desde lenguajes clásicos como C# o Java. También adoptamos un enfoque algo pragmático que hace un progreso incremental, de modo que ciertas construcciones aún no están totalmente integradas en el sistema de tipos. Un ejemplo de esto son functors, que se pueden usar dentro de expresiones, pero aún no tienen una representación en el sistema de tipos. En consecuencia, no se pueden asignar ni pasar actualmente como argumentos, de forma similar a la del tipo parametrized callables. Esperamos realizar un progreso incremental en la ampliación del sistema de tipos para que sea más completo y equilibrar las necesidades inmediatas con planes a largo plazo.
Tipos disponibles
Todos los tipos de Q# son inmutables .
| Tipo | Descripción |
|---|---|
Unit |
Representa un tipo singleton cuyo único valor es (). |
Int |
Representa un entero de 64 bits con signo. Los valores van de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. |
BigInt |
Representa valores enteros con signo de cualquier tamaño. |
Double |
Representa un número de punto flotante de 64 bits de precisión doble. Valores intervalo de -1.79769313486232e308 a 1.79769313486232e308, así como NaN (no un número). |
Bool |
Representa valores de booleanos. Los valores posibles son true o false. |
String |
Representa texto como valores que constan de una secuencia de unidades de código UTF-16. |
Qubit |
Representa un identificador opaco por el que se puede abordar la memoria cuántica virtual.
los valores de tipo Qubit se crean instancias a través de la asignación. |
Result |
Representa el resultado de una medida projectiva en los espacios propios de un operador cuántico con valores propios ±1. Los valores posibles son Zero o One. |
Pauli |
Representa una matriz de Pauli de un solo cúbit. Los valores posibles son PauliI, PauliX, PauliYo PauliZ. |
Range |
Representa una secuencia ordenada de valores Int espaciados por igual.
Los valores pueden representar secuencias en orden ascendente o descendente. |
| Array | Representa valores que contienen una secuencia de valores del mismo tipo. |
| Tuple | Representa valores que cada uno contiene un número fijo de elementos de diferentes tipos. Las tuplas que contienen un solo elemento son equivalentes al elemento que contienen. |
struct |
Representa un tipo definido por el usuario que consta de elementos con nombre de diferentes tipos. se crean instancias de valores al declarar una nueva instancia. |
| Operación | Representa un argumento de entrada no determinista invocable que toma un argumento de entrada (posiblemente con valores de tupla) y devuelve una salida (posiblemente con valores de tupla). Las llamadas a la operación valores pueden tener efectos secundarios y la salida puede variar para cada llamada, incluso cuando se invoca con el mismo argumento. |
| Función | Representa un argumento de entrada determinista invocable que toma un argumento de entrada (posiblemente con valores de tupla) y devuelve una salida (posiblemente con valores de tupla). Las llamadas a función valores no tienen efectos secundarios y la salida siempre será la misma dada la misma entrada. |