[erlang-questions] case or clause

Sten Kvamme <>
Thu Jan 8 23:30:13 CET 2009


tor 2009-01-08 klockan 23:04 +0100 skrev Richard Carlsson:
> Sten Kvamme wrote:
> > I got the question the other day about erlang best practize, to use case
> > or clause? (don't know if clasuse is the correct erlang name, but you
> > know -- in a Prolog-way).
> > 
> > Is erlang better/faster/leaner if I implement several "prolog" clauses
> > as a case in a clause, or is it better/faster/leaner to reduce the use
> > of case to situations when local variables in a clause is used in the
> > case statement?
> > 
> > Or is it just a matter of 'taste'?
> 
> You presumably mean the difference between
> 
>    f(Pattern1, ..., PatternN) -> ...;
>    ...
>    f(Pattern1, ..., PatternN) -> ....
> 
> and
> 
>    f(X) ->
>      case X of
>        Pattern1 -> ...;
>        ...
>        PatternN -> ...
>      end.
> 
> In efficiency terms, there is no real difference. (If there is one,
> it should be considered a compiler problem that might be corrected
> at any time - do not waste your time on such microoptimizations.)
> Oh, and 'if' switches are no different - they're really a 'case'.
> 
> So it's mostly a matter of taste. If your switch makes sense on its
> own, i.e., you can give it a reasonably straightforward name, then
> by all means break it out as a function - it will make the code
> easier to read and make it easier for you to see when there is
> common functionality that could be reused rather than copy-pasted.
> 
>      /Richard
> 

Ok, and if I'm using several clauses, is it like it is in Prolog a good
idea to put the clauses that match most often at the top?

/SK
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: Detta ?r en digitalt signerad	meddelandedel
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20090108/1c2c01b7/attachment.bin>


More information about the erlang-questions mailing list