Ternary logic: Difference between revisions

Added Quackery
(Added Wren)
(Added Quackery)
Line 4,436:
>>> </pre>
 
=={{header|Quackery}}==
<lang Quackery >
[ 2 ] is maybe ( --> t )
[ table 2 0 1 ] is jiggle ( t --> n )
[ jiggle 1+ ]this[ swap peek do ]done[ ] is 1-trit ( t --> t )
[ swap jiggle 1+ ]this[
swap peek
swap jiggle peek do ]done[ ] is 2-trits ( t t --> t )
[ 1-trit $ "true" $ "maybe" $ "false" ] is trit$ ( t --> $ )
[ trit$ echo$ ] is echotrit ( t --> )
[ dup echotrit true = if sp ] is paddedtrit ( t --> )
( true maybe false )
[ 1-trit false maybe true ] is t.not ( t --> t )
( true maybe false )
[ 2-trits ( true ) [ false maybe true ]
( maybe ) [ maybe maybe true ]
( false ) [ true true true ] ] is t.nand ( t t --> t )
( true maybe false )
[ 2-trits ( true ) [ true maybe false ]
( maybe ) [ maybe maybe false ]
( false ) [ false false false ] ] is t.and ( t t --> t )
( true maybe false )
[ 2-trits ( true ) [ true true true ]
( maybe ) [ true maybe maybe ]
( false ) [ true maybe false ] ] is t.or ( t t --> t )
( true maybe false )
[ 2-trits ( true ) [ false maybe true ]
( maybe ) [ maybe maybe maybe ]
( false ) [ true maybe false ] ] is t.xor ( t t --> t )
( Quackery does not have operators for material implication
(if a then b, a implies b) or material equivalence
(a ≣ b, A <=> b). However, The Book of Quackery notes that they
can be defined as:
"[ swap not or ] is implies ( a b --> c )"
"[ xor not ] is <=> ( a b --> c )"
so we will adapt these to test some of the ternary operators. )
[ swap t.not t.or ] is t.implies ( t t --> t )
[ t.xor t.not ] is t.<=> ( t t --> t )
cr
say " t.not | true | maybe | false" cr
say " ---------------------------------" cr
say " | " true t.not paddedtrit sp
say "| " maybe t.not paddedtrit sp
say "| " false t.not paddedtrit cr
cr
say " t.and | true | maybe | false" cr
say " ---------------------------------" cr
say " true | " true true t.and paddedtrit sp
say "| " true maybe t.and paddedtrit sp
say "| " true false t.and paddedtrit cr
say " maybe | " maybe true t.and paddedtrit sp
say "| " maybe maybe t.and paddedtrit sp
say "| " maybe false t.and paddedtrit cr
say " false | " false true t.and paddedtrit sp
say "| " false maybe t.and paddedtrit sp
say "| " false false t.and paddedtrit cr
cr
say " t.or | true | maybe | false" cr
say " ---------------------------------" cr
say " true | " true true t.or paddedtrit sp
say "| " true maybe t.or paddedtrit sp
say "| " true false t.or paddedtrit cr
say " maybe | " maybe true t.or paddedtrit sp
say "| " maybe maybe t.or paddedtrit sp
say "| " maybe false t.or paddedtrit cr
say " false | " false true t.or paddedtrit sp
say "| " false maybe t.or paddedtrit sp
say "| " false false t.or paddedtrit cr
cr
say " t.implies | true | maybe | false" cr
say " ---------------------------------" cr
say " true | " true true t.implies paddedtrit sp
say "| " true maybe t.implies paddedtrit sp
say "| " true false t.implies paddedtrit cr
say " maybe | " maybe true t.implies paddedtrit sp
say "| " maybe maybe t.implies paddedtrit sp
say "| " maybe false t.implies paddedtrit cr
say " false | " false true t.implies paddedtrit sp
say "| " false maybe t.implies paddedtrit sp
say "| " false false t.implies paddedtrit cr
cr
say " t.<=> | true | maybe | false" cr
say " ---------------------------------" cr
say " true | " true true t.<=> paddedtrit sp
say "| " true maybe t.<=> paddedtrit sp
say "| " true false t.<=> paddedtrit cr
say " maybe | " maybe true t.<=> paddedtrit sp
say "| " maybe maybe t.<=> paddedtrit sp
say "| " maybe false t.<=> paddedtrit cr
say " false | " false true t.<=> paddedtrit sp
say "| " false maybe t.<=> paddedtrit sp
say "| " false false t.<=> paddedtrit cr</lang>
 
'''Output:'''
<pre> t.not | true | maybe | false
---------------------------------
| false | maybe | true
 
t.and | true | maybe | false
---------------------------------
true | true | maybe | false
maybe | maybe | maybe | false
false | false | false | false
 
t.or | true | maybe | false
---------------------------------
true | true | true | true
maybe | true | maybe | maybe
false | true | maybe | false
 
t.implies | true | maybe | false
---------------------------------
true | true | maybe | false
maybe | true | maybe | maybe
false | true | true | true
 
t.<=> | true | maybe | false
---------------------------------
true | true | maybe | false
maybe | maybe | maybe | maybe
false | false | maybe | true
</pre>
 
=={{header|Racket}}==
1,462

edits