Ternary logic: Difference between revisions

Content added Content deleted
m (→‎{{header|REXX}}: added whitespace, aligned statements.)
(Added Julia language)
Line 2,649: Line 2,649:
Maybe ≡ False is Maybe Maybe ≡ Maybe is Maybe Maybe ≡ True is Maybe
Maybe ≡ False is Maybe Maybe ≡ Maybe is Maybe Maybe ≡ True is Maybe
True ≡ False is False True ≡ Maybe is Maybe True ≡ True is True</pre>
True ≡ False is False True ≡ Maybe is Maybe True ≡ True is True</pre>


== Alternative version ==
{{works with|Julia|0.7}}

With Julia 1.0 and the new type <tt>missing</tt>, three-value logic is implemented by default
<lang julia># built-in: true, false and missing

using Printf

const tril = (true, missing, false)

@printf("\n%8s | %8s\n", "A", "¬A")
for A in tril
@printf("%8s | %8s\n", A, !A)
end

@printf("\n%8s | %8s | %8s\n", "A", "B", "A ∧ B")
for (A, B) in Iterators.product(tril, tril)
@printf("%8s | %8s | %8s\n", A, B, A & B)
end

@printf("\n%8s | %8s | %8s\n", "A", "B", "A ∨ B")
for (A, B) in Iterators.product(tril, tril)
@printf("%8s | %8s | %8s\n", A, B, A | B)
end

@printf("\n%8s | %8s | %8s\n", "A", "B", "A ≡ B")
for (A, B) in Iterators.product(tril, tril)
@printf("%8s | %8s | %8s\n", A, B, A == B)
end

⊃(A, B) = B | !A

@printf("\n%8s | %8s | %8s\n", "A", "B", "A ⊃ B")
for (A, B) in Iterators.product(tril, tril)
@printf("%8s | %8s | %8s\n", A, B, A ⊃ B)
end</lang>


=={{header|Kotlin}}==
=={{header|Kotlin}}==