From b054aaca4b61d2da4ab6a3a970a2eab221529c32 Mon Sep 17 00:00:00 2001 From: Florian Hammerschmidt Date: Tue, 27 Aug 2024 17:17:06 +0200 Subject: [PATCH] Add Bool module --- src/Core__Bool.mjs | 54 +++++++++++++++++++++++++++++++++++++++++++++ src/Core__Bool.res | 34 ++++++++++++++++++++++++++++ src/Core__Bool.resi | 23 +++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 src/Core__Bool.mjs create mode 100644 src/Core__Bool.res create mode 100644 src/Core__Bool.resi diff --git a/src/Core__Bool.mjs b/src/Core__Bool.mjs new file mode 100644 index 00000000..d461d772 --- /dev/null +++ b/src/Core__Bool.mjs @@ -0,0 +1,54 @@ +// Generated by ReScript, PLEASE EDIT WITH CARE + + +function fromStringExn(param) { + switch (param) { + case "false" : + return false; + case "true" : + return true; + default: + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Bool.fromStringExn: value is neither \"true\" nor \"false\"", + Error: new Error() + }; + } +} + +function fromString(param) { + switch (param) { + case "false" : + return false; + case "true" : + return true; + default: + return ; + } +} + +function xor(a, b) { + return a !== b; +} + +function xnor(a, b) { + return a === b; +} + +function nand(a, b) { + return !(a && b); +} + +function nor(a, b) { + return !(a || b); +} + +export { + fromStringExn , + fromString , + xnor , + xor , + nand , + nor , +} +/* No side effect */ diff --git a/src/Core__Bool.res b/src/Core__Bool.res new file mode 100644 index 00000000..d086281c --- /dev/null +++ b/src/Core__Bool.res @@ -0,0 +1,34 @@ +// Core__Bool.res +external compare: (bool, bool) => Core__Ordering.t = "%compare" + +external equal: (bool, bool) => bool = "%equal" + +@send external toString: bool => string = "toString" + +let fromStringExn = param => + switch param { + | "true" => true + | "false" => false + | _ => raise(Invalid_argument(`Bool.fromStringExn: value is neither "true" nor "false"`)) + } + +let fromString = param => + switch param { + | "true" => Some(true) + | "false" => Some(false) + | _ => None + } + +external and_: (bool, bool) => bool = "%sequand" + +external or: (bool, bool) => bool = "%sequor" + +external not: bool => bool = "%boolnot" + +let xor = (a, b) => a !== b + +let xnor = (a, b) => !xor(a, b) + +let nand = (a, b) => !and_(a, b) + +let nor = (a, b) => !or(a, b) diff --git a/src/Core__Bool.resi b/src/Core__Bool.resi new file mode 100644 index 00000000..37b11597 --- /dev/null +++ b/src/Core__Bool.resi @@ -0,0 +1,23 @@ +external compare: (bool, bool) => Core__Ordering.t = "%compare" + +external equal: (bool, bool) => bool = "%equal" + +@send external toString: bool => string = "toString" + +let fromStringExn: string => bool + +let fromString: string => option + +external and_: (bool, bool) => bool = "%sequand" + +external or: (bool, bool) => bool = "%sequor" + +external not: bool => bool = "%boolnot" + +let xnor: (bool, bool) => bool + +let xor: (bool, bool) => bool + +let nand: (bool, bool) => bool + +let nor: (bool, bool) => bool