Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Avec le focus pour l’algorithme quantique étant plus vers ce qui doit être réalisé plutôt que sur une représentation problématique en termes de structures de données, prendre une perspective plus fonctionnelle sur la conception du langage est un choix naturel. En même temps, le système de type est un mécanisme puissant qui peut être utilisé pour l’analyse du programme et d’autres vérifications au moment de la compilation qui facilitent la simulation de code robuste.
Dans l’ensemble, le système de type Q# est assez minimaliste, dans le sens où il n’y a pas de notion explicite de classes ou d’interfaces, car il peut être utilisé à partir de langages classiques comme C# ou Java. Nous prenons également une approche quelque peu pragmatique qui fait des progrès incrémentiels, de sorte que certaines constructions ne sont pas encore entièrement intégrées au système de type. Voici un exemple de fonctors, qui peuvent être utilisés dans des expressions, mais qui n’ont pas encore de représentation dans le système de type. En conséquence, ils ne peuvent pas être affectés ou passés en tant qu’arguments, comme c’est le cas pour les callables paramétrables de type. Nous prévoyons d’effectuer des progrès incrémentiels dans l’extension du système de type afin qu’il soit plus complet et équilibrer les besoins immédiats avec les plans à long terme.
Types disponibles
Tous les types de Q# sont immuables .
Catégorie | Description |
---|---|
Unit |
Représente un type singleton dont la seule valeur est () . |
Int |
Représente un entier signé 64 bits. Valeurs comprise entre -9 223 372 036 854 775 808 et 9 223 372 036 854 775 807. |
BigInt |
Représente les valeurs d’entier signé de n’importe quelle taille. |
Double |
Représente un nombre à virgule flottante double précision 64 bits. Valeurs plage comprise entre -1.79769313486232e308 à 1,79769313486232e308, ainsi que NaN (pas un nombre). |
Bool |
Représente les valeurs booléennes. Les valeurs possibles sont true ou false . |
String |
Représente du texte sous forme de valeurs qui se composent d’une séquence d’unités de code UTF-16. |
Qubit |
Représente un identificateur opaque par lequel la mémoire quantique virtuelle peut être traitée.
Valeurs de type Qubit sont instanciées via l’allocation. |
Result |
Représente le résultat d’une mesure projective sur les espaces propres d’un opérateur quantique avec des valeurs propres ±1. Les valeurs possibles sont Zero ou One . |
Pauli |
Représente une matrice Pauli à qubit unique. Les valeurs possibles sont PauliI , PauliX , PauliY ou PauliZ . |
Range |
Représente une séquence ordonnée de valeurs de Int égales.
Valeurs peuvent représenter des séquences dans l’ordre croissant ou décroissant. |
Tableau | Représente valeurs qui contiennent chacune une séquence de valeurs du même type. |
Tuple | Représente valeurs qui contiennent chacun un nombre fixe d’éléments de différents types. Les tuples contenant un seul élément sont équivalents à l’élément qu’ils contiennent. |
struct |
Représente un type défini par l’utilisateur composé d’éléments nommés de différents types. Valeurs sont instanciées lors de la déclaration d’une nouvelle instance. |
Opération | Représente un non déterministe qui accepte un argument d’entrée (éventuellement tuple) et retourne une sortie (éventuellement tuple-valued). Les appels à l’opération valeurs peuvent avoir des effets secondaires et la sortie peut varier pour chaque appel, même lorsqu’elle est appelée avec le même argument. |
Fonction | Représente un déterministe qui accepte un argument d’entrée (éventuellement tuple) et retourne une sortie (éventuellement tuple-valued). Les appels à la fonction valeurs n’ont pas d’effets secondaires et la sortie sera toujours la même en fonction de la même entrée. |