
On Thu, Nov 04, 2004 at 11:44:32AM +0300, Alexander Kogan wrote:
Ok. I have 2 questions about this: 1. This means seq function evaluates only 'top' of argument, so when I pass, for example, list as argument, it will be evaluated only to [unevaluated, unevaluated, ...]? Am I right?
Almost. [...] is a syntactic sugar. List is defined by an algebraic data type: data [a] = (:) a [a] | [] seq'ing a list will only force the topmost constructor, ie: unevaluated : unevaluated or [] or _|_ Note that the things marked 'unevaluated' above, could be already evaluated by some other computation.
2. If so, is there method to _completely_ evaluate expression?
Most of the time you don't need it. But if you think you do, search for DeepSeq. I think that Data.Generics could be also used for that. Best regards, Tom -- .signature: Too many levels of symbolic links