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.