Ternary logic: Difference between revisions
Content added Content deleted
MazenMokhtar (talk | contribs) mNo edit summary |
Langurmonkey (talk | contribs) |
||
Line 3,463: | Line 3,463: | ||
=={{header|langur}}== |
=={{header|langur}}== |
||
{{trans|Go}} |
{{trans|Go}} |
||
<syntaxhighlight lang="langur"> |
<syntaxhighlight lang="langur"> |
||
# borrowing null for "maybe" |
|||
val |
val trSet = [false, null, true] |
||
val |
val tand = fn a, b: switch[and] a, b { |
||
case true, null: |
case true, null: |
||
case null, true: |
case null, true: |
||
case null: null |
case null: null |
||
default: |
default: a and b |
||
} |
} |
||
val |
val tor = fn a, b: switch[and] a, b { |
||
case false, null: |
case false, null: |
||
case null, false: |
case null, false: |
||
case null: null |
case null: null |
||
default: |
default: a or b |
||
} |
} |
||
val |
val imply = fn a, b: if(a nor b: not? a; b) |
||
# formatting function for the result values |
# formatting function for the result values |
||
# replacing null with "maybe" |
# replacing null with "maybe" |
||
# using left alignment of 5 code points |
# using left alignment of 5 code points |
||
val |
val F = fn r: "{{nn([r, "maybe"]):-5}}" |
||
writeln "a not a" |
writeln "a not a" |
||
for |
for a in trSet { |
||
writeln "{{ |
writeln "{{a:fn F}} {{not? a:fn F}}" |
||
} |
} |
||
writeln "\na b a and b" |
writeln "\na b a and b" |
||
for |
for a in trSet { |
||
for |
for b in trSet { |
||
writeln "{{ |
writeln "{{a:fn F}} {{b:fn F}} {{tand(a, b):fn F}}" |
||
} |
} |
||
} |
} |
||
writeln "\na b a or b" |
writeln "\na b a or b" |
||
for |
for a in trSet { |
||
for |
for b in trSet { |
||
writeln "{{ |
writeln "{{a:fn F}} {{b:fn F}} {{tor(a, b):fn F}}" |
||
} |
} |
||
} |
} |
||
writeln "\na b a implies b" |
writeln "\na b a implies b" |
||
for |
for a in trSet { |
||
for |
for b in trSet { |
||
writeln "{{ |
writeln "{{a:fn F}} {{b:fn F}} {{imply(a, b):fn F}}" |
||
} |
} |
||
} |
} |
||
writeln "\na b a eq b" |
writeln "\na b a eq b" |
||
for |
for a in trSet { |
||
for |
for b in trSet { |
||
writeln "{{ |
writeln "{{a:fn F}} {{b:fn F}} {{a ==? b:fn F}}" |
||
} |
} |
||
} |
} |