195fe01e8b
This example was confusing at first because the element the message indicated wasn't in the list of possible values was but the possible values didn't match up either. This ensures the example is consistent with the logic being presented.
112 lines
3 KiB
XML
112 lines
3 KiB
XML
<section xmlns="http://docbook.org/ns/docbook"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
xml:id="sec-functions-library-asserts">
|
|
<title>Assert functions</title>
|
|
|
|
<section xml:id="function-library-lib.asserts.assertMsg">
|
|
<title><function>lib.asserts.assertMsg</function></title>
|
|
|
|
<subtitle><literal>assertMsg :: Bool -> String -> Bool</literal>
|
|
</subtitle>
|
|
|
|
<xi:include href="./locations.xml" xpointer="lib.asserts.assertMsg" />
|
|
|
|
<para>
|
|
Print a trace message if <literal>pred</literal> is false.
|
|
</para>
|
|
|
|
<para>
|
|
Intended to be used to augment asserts with helpful error messages.
|
|
</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<varname>pred</varname>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Condition under which the <varname>msg</varname> should <emphasis>not</emphasis> be printed.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<varname>msg</varname>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
Message to print.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<example xml:id="function-library-lib.asserts.assertMsg-example-false">
|
|
<title>Printing when the predicate is false</title>
|
|
<programlisting><![CDATA[
|
|
assert lib.asserts.assertMsg ("foo" == "bar") "foo is not bar, silly"
|
|
stderr> trace: foo is not bar, silly
|
|
stderr> assert failed
|
|
]]></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<section xml:id="function-library-lib.asserts.assertOneOf">
|
|
<title><function>lib.asserts.assertOneOf</function></title>
|
|
|
|
<subtitle><literal>assertOneOf :: String -> String ->
|
|
StringList -> Bool</literal>
|
|
</subtitle>
|
|
|
|
<xi:include href="./locations.xml" xpointer="lib.asserts.assertOneOf" />
|
|
|
|
<para>
|
|
Specialized <function>asserts.assertMsg</function> for checking if <varname>val</varname> is one of the elements of <varname>xs</varname>. Useful for checking enums.
|
|
</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<varname>name</varname>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
The name of the variable the user entered <varname>val</varname> into, for inclusion in the error message.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<varname>val</varname>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
The value of what the user provided, to be compared against the values in <varname>xs</varname>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<varname>xs</varname>
|
|
</term>
|
|
<listitem>
|
|
<para>
|
|
The list of valid values.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<example xml:id="function-library-lib.asserts.assertOneOf-example">
|
|
<title>Ensuring a user provided a possible value</title>
|
|
<programlisting><![CDATA[
|
|
let sslLibrary = "bearssl";
|
|
in lib.asserts.assertOneOf "sslLibrary" sslLibrary [ "openssl" "libressl" ];
|
|
=> false
|
|
stderr> trace: sslLibrary must be one of "openssl", "libressl", but is: "bearssl"
|
|
]]></programlisting>
|
|
</example>
|
|
</section>
|
|
</section>
|