Ternary logic: Difference between revisions

m
imported>Arakov
imported>Arakov
Line 1,669:
Trit equivalent(b)
{
var val2 := cast bool(b) \ back:(nil);
 
if (val2 != nil && _value != nil)
Line 1,680:
Trit Inverted
= _value.Inverted \ back:(nilValue);
Trit and(b)
Line 1,686:
if (nil == _value)
{
^ b.and:(nil) \ back:(nilValue)
}
else
{
^ _value.and(/*$lazy cast bool(*/b/*)*/) \ back:(nilValue)
}
}
Line 1,698:
if (nil == _value)
{
^ b.or:(nilValue) \ back:(nilValue)
}
else
{
^ _value.or(/*$lazy cast bool(*/b/*)*/) \ back:(nilValue)
}
}
Line 1,709:
= self.Inverted.or(b);
string toPrintable() = _value.toPrintable() \ back:("maybe");
}
Line 1,715:
{
List<Trit> values := new Trit[]{true, nilValue, false};
values.forEach::(left)
{
console.printLine("¬",left," = ", left.Inverted);
values.forEach::(right)
{
console.printLine(left, " & ", right, " = ", left && right);
console.printLine(left, " | ", right, " = ", left || right);
console.printLine(left, " → ", right, " = ", left.implies:(right));
console.printLine(left, " ≡ ", right, " = ", left.equivalent:(right))
}
}
Anonymous user