Correct syntax of a case clause

Bryan Fink bryan.fink@REDACTED
Mon Jun 15 19:29:07 CEST 2009


On Mon, Jun 15, 2009 at 1:02 PM, mats cronqvist<masse@REDACTED> wrote:
>  If Expr is modified so it can be bound to values other than a, b or c,
>  it will work (i.e. produce the correct result) only by accident. But
>  it will not fail (i.e. throw an exception). This is what I consider
>  the worst kind of broken.
>
>  Given that the original problem statement considered itself with a, b
>  and c, we must assume we have no idea what to do if we get a
>  d. Otherwise the spec should have read; "all values except c should be
>  treated the same." This is different from when we write a polymorphic
>  function, when we know up front that some value should be ignored.

Completely agreed!  Fail as fast as possible if the luxury of
conforming strictly to a spec is available.

I've been spending too much time supporting either legacy,
non-changeable systems, or very new, speculative systems where I may
start out with the strict case clause, but then be forced into a
fairly generous 'default' action through an incomplete or wildly
in-flux implementation of a spec in the party connecting to my code.
It may not be the code I *want* to write for the problem, but it does
lower some of the cost of overhead related to constant refactoring,
when applied carefully. (Even at that, I do usually try to make the
default action complain loudly, so I don't get confused when new input
tickles it.)  As such, I read John's "spec" a little differently.

-Bryan


More information about the erlang-questions mailing list