Construction conditionnelle pour un type de données kleénéen
https://softwareengineering.stackexchange.com/questions/199065
-
06-11-2019 - |
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 unknown
où unknown
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