Stavo pensando a un ipotetico linguaggio di programmazione con un tipo di dati kleenean
che implementerebbe la logica a tre valori di Kleene . Per riassumere, è un'estensione del tipo di dati booleana con le tre costanti true
, false
e unknown
dove unknown
significa che il valore è o true
o false
, ma non lo facciamo sapere quale.
Le tabelle di verità per un tipo keniano sono ben note e la logica è abbastanza facile da capire. Tuttavia, mi chiedevo come si progetterebbe un costrutto condizionale per tenere conto di questo valore di unknown
.
Un costrutto condizionale di base if-then-else
è quasi sempre il seguente:
if (boolean condition) then
condition is true, do something
else
condition is false, do some other thing
end
Tuttavia, ho difficoltà a vedere come sarebbe il kleenean if
. Come interpretare la costante di unknown
? Tecnicamente parlando, potrebbe soddisfare la condizione true
e la condizione false
poiché è uno di questi due. Tuttavia, non possiamo farli corrispondere a nessuno di questi poiché potrebbe essere l'altro, non è in realtà true
né false
.
Esiste un modo ben noto per implementare un simile costrutto?
EDIT: Per specificare un po ', preferirei qualcosa di diverso dal modo in cui boost::tribool
funziona, o da un semplice switch
come se fosse un enum. Le risposte sulla sovrapposizione quantistica e sulla semantica sono le benvenute.