Lazy evaluation alternative

Chris Clearwater chris@sharkzone.com
Fri, 24 Jan 2003 08:22:58 -0600


On Fri, Jan 24, 2003 at 03:07:48PM +0100, Thomas Johnsson wrote:
> 
>  > 
>  > Yes I am. But the + should be in CPS form anyways to be perfectly
>  > correct, so: natural n c = (+) n 1 (\m -> c n : (natural m))
>  > 
> 
> I think Jerzy (in his usual polite manner :-) refers to the 
every group has it's moshez (don't ask :)
> cons operator, the :, which in a strongly typed language
> the right argument, the tail, is required to be a list.
> The function is declared as  natural n c = ...,
> so (natural m) must be a funcion.

Well, let's pretend I made my own datatype then that supports the right
type class interfaces, and has a function as a tail :)

But also, this brings me to another idea!
Data structures should be built from lambdas and CPS!
For example, a list of integers: 1 : 2 : 3

list = \c -> c 1 (\c -> c 2 nil)

now:

natural n c = c n (natural n+1)
full blown CPS:
natural n c = (+) n 1 (\m -> c n (natural m))
so, here (nautral m) _is_ a list just like the above list!

> Might I guess that you come from the lisp / scheme world?

No. :)
> 
> Regards,
> -- Thomas
> 
>