[EMAIL PROTECTED] writes: > Besides, having > > let q = FinCons 3 q in q > > not being _|_ crucially depends on memoization.
Does it? Mentally I translate that as let q = Y (\q -> FinCons 3 q) in q => Y (\q-> FinCons 3 q) => (\q -> FinCons 3 q) (Y (\q-> FinCons 3 q)) => FinCons 3 (Y (\q -> FinCons 3 q)) which, assuming a plausible lambda expression for FinCons, is a soluble term. > Even with the characterization by WHNF, > > let q x = FinCons 3 (q x) in q () > > is _|_. Again q = Y(\q x -> FinCons 3 (q x)) so q () => Y(\q x -> FinCons 3 (q x)) () => (\q x -> FinCons 3 (q x))(Y(\q x -> FinCons 3 (q x))) () => (\x -> FinCons 3 (Y(\q y-> FinCons 3 (q y)) x)) () => FinCons 3 (Y(\q x -> FinCons 3 (q x)) () ) which is in WHNF (and soluble too) -- Jón Fairbairn [EMAIL PROTECTED] _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://www.haskell.org/mailman/listinfo/haskell-prime