caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Re: [Caml-list] Breaking out of iterative loops
@ 2002-05-02 13:15 Krishnaswami, Neel
  2002-05-02 13:34 ` Markus Mottl
  0 siblings, 1 reply; 11+ messages in thread
From: Krishnaswami, Neel @ 2002-05-02 13:15 UTC (permalink / raw)
  To: OCaml Mailing list

Markus Mottl [mailto:markus@oefai.at] wrote:
> On Wed, 01 May 2002, John Prevost wrote:
> > The drawback to allowing:
> > 
> > let rec ones = 1 :: ones
> > 
> > and such expressions is that when looking at the definition of, for
> > example, 'a list and length, one would expect it to be 
> > guaranteed that length terminates. 
> 
> I second this. Does anybody here really benefit from such cyclic
> structures?

Somewhat to my surprise, I can answer yes:

type expr =
  | Var of string
  | App of expr * expr
  | Fun of string * expr
  | Rec of string * string * expr
and denot = Closure of string * expr * env
and env = (string * denot) list

let rec eval e r =
  match e with
  | Var v -> List.assoc v r
  | App(f, arg) ->
      let Closure(n, body, r') = eval f r in
      let v = eval arg r in
      eval body ((n, v) :: r')
  | Fun(n, body) -> Closure(n, body, r)
  | Rec(name, n, body) -> 
      let rec c = Closure(n, body, r')
      and r' = (name, c) :: r in
      c

Using cyclic structures means I don't have to dink around with 
mutable references and all the headaches they bring, and so it's
very handy when prototyping. 

--
Neel Krishnaswami
neelk@cswcasa.com
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 11+ messages in thread
* [Caml-list] Breaking out of iterative loops
@ 2002-04-30 20:27 Vincent Foley
  2002-04-30 21:38 ` Johan Baltié
  0 siblings, 1 reply; 11+ messages in thread
From: Vincent Foley @ 2002-04-30 20:27 UTC (permalink / raw)
  To: OCaml Mailing list

What are the equivalents (if any) of C's 'continue' and 'break' in
O'Caml (respectively, start another iteration and quit the loop without
further processing)?

Mes voeux de bonheur les plus sinceres avec des p'tites filles en tutu
avec un sucon,

  Vincent

-- 

Vincent Foley-Bourgon
Email: vinfoley@iquebec.com
Homepage: http://darkhost.mine.nu:81
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2002-05-02 15:40 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-05-02 13:15 [Caml-list] Breaking out of iterative loops Krishnaswami, Neel
2002-05-02 13:34 ` Markus Mottl
  -- strict thread matches above, loose matches on Subject: below --
2002-04-30 20:27 Vincent Foley
2002-04-30 21:38 ` Johan Baltié
2002-05-02  0:57   ` John Max Skaller
2002-05-02  2:18     ` John Prevost
2002-05-02  8:33       ` Markus Mottl
2002-05-02  9:14         ` Francois Pottier
2002-05-02  9:50           ` Alain Frisch
2002-05-02 14:35         ` Alessandro Baretta
2002-05-02 15:40         ` John Max Skaller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).