[Haskell-cafe] let vs. where
jgbailey at gmail.com
Tue Nov 13 14:41:20 EST 2007
On Nov 13, 2007 10:56 AM, John Lato <jwlato at gmail.com> wrote:
> I know there are several important differences between let-expressions
> and where-clauses regarding scoping and the restriction of "where" to
> a top-level definition. However, frequently I write code in which
One place I find it useful is when there is a common computed value
that is used throughout a function definition. For example, imagine
some function that uses the length of a list passed in:
someFunction ls a b c = ... (length ls)
someAuxFunction x y = ... length ls ..
someOtherFunction x y = ... length ls ...
a where clause can capture that calculation, make sure it's only done
once, and shared throughout the function definition:
someFunction ls a b c = ... listLen ...
listLen = length ls
someAuxFunction x y = ... listLen ...
someOtherFunction x y = ... listLen ...
Notice a let clause wouldn't do it above, because "length ls" is
called inside other functions defined in the where clause. Of course
everything could be moved to a "let" clause in the function body. At
that point I think it's purely stylistic.
More information about the Haskell-Cafe