<div dir="ltr"><br><div class="gmail_quote">On Tue, Oct 29, 2013 at 3:41 PM, Jesper Louis Andersen <span dir="ltr"><<a href="mailto:jesper.louis.andersen@gmail.com" target="_blank">jesper.louis.andersen@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div>view(eq) -> 0;</div><div>view(lt) -> -1;</div><div>view(gt) -> 1.</div>

<div><br></div><div>This function is exhaustive in the input type.</div></div></blockquote><div><br></div><div>No it's not.  Unless you define the input type as :- type order() :: eq | lt | gt.  Well, you can do the same thing with integers in Erlang: :- type order() :: -1 | 0 | 1.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Another problem with an integer is that</div>

<div><br></div><div>compare(X, Y) * compare(Y, Z) is a valid expression, but it has no meaning whatsoever.</div></div></blockquote><div><br></div><div>And with atoms, list_to_atom(lists:append(atom_to_list(X), atom_to_list(Y)) is equally meaningless.</div>
</div></div>