Question

Je pensais à un langage de programmation hypothétique avec un kleenean Type de données qui implémenterait logique à trois valeurs. Pour résumer, c'est une extension du type de données booléen avec les trois constantes true, false et unknownunknown signifie que la valeur est soit true ou false, mais nous ne savons pas lesquels.

Les tables de vérité pour un type kleénéen sont bien connues et la logique est assez facile à comprendre. Cependant, je me demandais comment on concevrait une construction conditionnelle pour prendre en compte ceci unknown évaluer.

Un basique if-then-else La construction conditionnelle est presque toujours la suivante:

if (boolean condition) then
    condition is true, do something
else
    condition is false, do some other thing
end

Cependant, j'ai du mal à voir ce qu'un kleénéen if La construction ressemblerait. Comment pourrions-nous interpréter le unknown constant? Techniquement parlant, il pourrait satisfaire le true condition ainsi que le false condition car c'est l'un de ces deux. Cependant, nous ne pouvons pas le faire correspondre à aucun de ceux-ci car il pourrait être l'autre, ce n'est pas vraiment true ni false.

Existe-t-il un moyen bien connu de mettre en œuvre une telle construction?

ÉDITER: Pour spécifier un peu, je préfère quelque chose de différent de la voie boost::tribool fonctionne, ou à partir d'un simple switch Comme s'il était une enum. Les réponses sur la superposition quantique et la sémantique sont les bienvenues.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top