Hi<br /><br />&gt; &gt; Why not: compress :: Bool? That&#39;s what I&#39;ve done now, for things like<br />&gt; &gt; compression if you introduce gzip/bzip/lzma etc we can expand to a<br />&gt; &gt; flag, but for most things bool captures the options.<br />&gt; <br />&gt; Because then you end up with lots of unspecific Bool bits in signatures<br />&gt; (instead of Compression -- which states what is the purpose of the parameter<br />&gt; clearly), and pattern matches look like foo True and foo False instead of foo<br />&gt; GzipCompression and foo NoCompression. It&#39;s just a readability thing.<br /><br />I should have stated my idea more clearly:<br /><br />data Opts = Opts {compress :: Bool}<br /><br />now you can pattern match on {compress=True}, and the name is always associated with the type perfectly. Of course, some people prefer explicit enumerations so that&#39;s perfectly possible too.<br /><br />Thanks<br /><br />Neil