Assert functions


assertMsg :: Bool -> String -> Bool

Throw if pred is false, else return pred. Intended to be used to augment asserts with helpful error messages.


Condition under which the msg should not be printed


Message to print

lib.asserts.assertMsg usage example

assertMsg false "nope"
stderr> error: nope

assert assertMsg ("foo" == "bar") "foo is not bar, silly"; ""
stderr> error: foo is not bar, silly


assertOneOf :: String -> ComparableVal -> List ComparableVal -> Bool

Specialized assertMsg for checking if val is one of the elements of a list. Useful for checking enums.


The name of the variable the user entered val into, for inclusion in the error message


The value of what the user provided, to be compared against the values in xs


The list of valid values

lib.asserts.assertOneOf usage example

let sslLibrary = "libressl";
in assertOneOf "sslLibrary" sslLibrary [ "openssl" "bearssl" ]
stderr> error: sslLibrary must be one of [
stderr>   "openssl"
stderr>   "bearssl"
stderr> ], but is: "libressl"