Jón Fairbairn wrote: > [EMAIL PROTECTED] writes: > >> Besides, having >> >> let q = FinCons 3 q in q >> >> not being _|_ crucially depends on memoization. > > Does it?
Sorry for having introduced an extra paragraph, I meant that q =/= _|_ under the new WHNF-rule would depend on memoization. At the memory location of q, hereby marked with *q, evaluation would yield *q: q => *q: FinCons 3 q Now, this can be considered "ok" according to the rule because the data at the location is WHNF and the second argument of FinsCons is WHNF as well because we just evaluated q to WHNF. By introducing an extra parameter, the memoization is gone and evaluation will yield q () => FinCons 3 (q ()) The point is that the second argument to FinCons is not WHNF, so we have to evaluate that further in order to generate only values that conform to the new WHNF-rule. Of course, this evaluation will diverge now. With the above, I want to show that the proposed new WHNF-rule gives non-_|_ values in very special cases only. I don't think that these are worth it. Regards, apfelmus PS: Your derivations are fine in the case of a non-strict FinCons. But the point is to make in strict. _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://www.haskell.org/mailman/listinfo/haskell-prime