32 lines
805 B
Text
32 lines
805 B
Text
|
/*
|
||
|
*
|
||
|
*/
|
||
|
export {
|
||
|
let bool-norm =
|
||
|
λ { x: Bool ~ machine.Word; }
|
||
|
↦ if(x) {
|
||
|
(1 des machine.Word) as Bool;
|
||
|
} else {
|
||
|
(0 des machine.Word) as Bool;
|
||
|
};
|
||
|
|
||
|
let bool-neg =
|
||
|
λ { x: Bool ~ machine.Word; }
|
||
|
↦ (bit-and (bit-neg (bool-norm x)) 1) as Bool;
|
||
|
|
||
|
let bool-or =
|
||
|
λ { a: Bool ~ machine.Word;
|
||
|
b: Bool ~ machine.Word; }
|
||
|
↦ (bit-or a b) as Bool ~ machine.Word;
|
||
|
|
||
|
let bool-and =
|
||
|
λ{ a: Bool ~ machine.Word;
|
||
|
b: Bool ~ machine.Word; }
|
||
|
↦ (bit-and (bool-norm a) (bool-norm b)) as Bool ~ machine.Word;
|
||
|
|
||
|
let bool-xor =
|
||
|
λ{ a: Bool ~ machine.Word;
|
||
|
b: Bool ~ machine.Word; }
|
||
|
↦ (bit-xor (bool-norm a) (bool-norm b)) as Bool ~ machine.Word;
|
||
|
}
|