Ternary logic: Difference between revisions

mNo edit summary
 
Line 3,463:
=={{header|langur}}==
{{trans|Go}}
<syntaxhighlight lang="langur"># borrowing null for "maybe"
# borrowing null for "maybe"
val .trSet = [false, null, true]
 
val .andtand = fn .a, .b: switch[and] .a, .b {
case true, null:
case null, true:
case null: null
default: .a and .b
}
 
val .ortor = fn .a, .b: switch[and] .a, .b {
case false, null:
case null, false:
case null: null
default: .a or .b
}
 
val .imply = fn .a, .b: 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 = fn .r: "{{nn ([.r, "maybe"]):-5}}"
 
writeln "a not a"
for .a in .trSet {
writeln "{{.a:fn F}} {{not? .a:fn F}}"
}
 
writeln "\na b a and b"
for .a in .trSet {
for .b in .trSet {
writeln "{{.a:fn F}} {{.b:fn F}} {{.andtand(.a, .b):fn F}}"
}
}
 
writeln "\na b a or b"
for .a in .trSet {
for .b in .trSet {
writeln "{{.a:fn F}} {{.b:fn F}} {{.ortor(.a, .b):fn F}}"
}
}
 
writeln "\na b a implies b"
for .a in .trSet {
for .b in .trSet {
writeln "{{.a:fn F}} {{.b:fn F}} {{.imply(.a, .b):fn F}}"
}
}
 
writeln "\na b a eq b"
for .a in .trSet {
for .b in .trSet {
writeln "{{.a:fn F}} {{.b:fn F}} {{.a ==? .b:fn F}}"
}
}
1,007

edits