[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

Reply via email to