Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[Caml-list] Python's yield, Lisp's call-cc or C's setjmp/longjmp in OCaml
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2003-12-18 (01:15)
From: Nicolas Cannasse <warplayer@f...>
Subject: Re: [Caml-list] Python's yield, Lisp's call-cc or C's setjmp/longjmp in OCaml
> [...]
> > This only works for simple examples. Try for example writing a
> > function which successively yields all possible moves for a chess
> > board. The "yield" operator really helps there.
> Very interesting: please give us the code corresponding to this
> example, in order for us to realize how the full power of the "yield"
> operator helps to solve this problem.
> Pierre Weis

One simple sample is tree walking :
"if there was yield in ocaml"

type 'a tree =
    |  Node of 'a tree list
    |  Leaf of 'a

let rec iterator = function
    | Node l -> List.iter iterator l
    | Leaf x -> yield x

Doing it using a closure is more difficult, since we need to reproduce the
stack using a data structure. That goes of course for all recursive data

Nicolas Cannasse

To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: