[Haskell-cafe] Lazy series [was : Preventing sharing]
Tom Ellis
tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk
Sat Jan 9 19:00:40 UTC 2016
On Sat, Jan 09, 2016 at 07:48:04PM +0100, Arjen wrote:
> >I'm not quite sure what you're asking, but consider the difference between
> >these two calls to the function id in OCaml.
> >
> ># let id x = x;;
> >val id : 'a -> 'a = <fun>
> >
> ># id (Printf.printf "Hello");;
> >Hello- : unit = ()
> >
> ># id (fun () -> Printf.printf "Hello");;
> >- : unit -> unit = <fun>
> >
> >
> >The correspond to the following in an imaginary impure Haskell-like
> >language:
> >
> >id (print "Hello")
> >"Hello"
> >
> >id (\() -> print "Hello")
> ><no output>
>
> I think I see what you mean. Then in OCaml exps would have type
> unit->Int? And to get the value, you would use exps ()?
In OCaml exps could have type A, where A is isomorphic to
() -> (Double, A)
To get the first value you could (effectively) use 'exps ()'. You get a
tail of type A along with it. I suggest you look through Oleg's code. It's
quite illuminating.
http://okmij.org/ftp/ML/powser.ml
Tom
More information about the Haskell-Cafe
mailing list