Ternary logic: Difference between revisions

Content added Content deleted
Line 3,466: Line 3,466:
<syntaxhighlight lang="langur"># borrowing null for "maybe"
<syntaxhighlight lang="langur"># borrowing null for "maybe"
val .trSet = [false, null, true]
val .trSet = [false, null, true]

val .result = f $"\{nn [.r, "maybe"]:-5}"


val .and = f switch[and] .a, .b {
val .and = f switch[and] .a, .b {
Line 3,484: Line 3,482:


val .imply = f if(.a nor .b: not? .a; .b)
val .imply = f if(.a nor .b: not? .a; .b)

# formatting function for the result values
# replacing null with "maybe"
# using left alignment of 5 code points
val .F = f $"\{nn [.r, "maybe"]:-5}"


writeln "a not a"
writeln "a not a"
for .a in .trSet {
for .a in .trSet {
writeln .result(.a), " ", .result(not? .a)
writeln $"\.a:.F; \(not? .a:.F)"
}
}


Line 3,493: Line 3,496:
for .a in .trSet {
for .a in .trSet {
for .b in .trSet {
for .b in .trSet {
writeln $"\.result(.a); \.result(.b); ", .result(.and(.a, .b))
writeln $"\.a:.F; \.b:.F; \.and(.a, .b):.F;"
}
}
}
}
Line 3,500: Line 3,503:
for .a in .trSet {
for .a in .trSet {
for .b in .trSet {
for .b in .trSet {
writeln $"\.result(.a); \.result(.b); ", .result(.or(.a, .b))
writeln $"\.a:.F; \.b:.F; \.or(.a, .b):.F;"
}
}
}
}
Line 3,507: Line 3,510:
for .a in .trSet {
for .a in .trSet {
for .b in .trSet {
for .b in .trSet {
writeln $"\.result(.a); \.result(.b); ", .result(.imply(.a, .b))
writeln $"\.a:.F; \.b:.F; \.imply(.a, .b):.F;"
}
}
}
}
Line 3,514: Line 3,517:
for .a in .trSet {
for .a in .trSet {
for .b in .trSet {
for .b in .trSet {
writeln $"\.result(.a); \.result(.b); ", .result(.a ==? .b)
writeln $"\.a:.F; \.b:.F; \.a ==? .b:.F;"
}
}
}</syntaxhighlight>
}</syntaxhighlight>