[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2001-10-11 (07:11) |
From: | Remi VANICAT <vanicat@l...> |
Subject: | Re: [Caml-list] Newbie question concerning type definitions |
"Thomas Link" <t.link.tmp200101@gmx.net> writes: > Hello, > > I have hesitated to send this question to this mailing list as I > suspect it to be rather stupid. What am I trying to do? I would like to > implement a simple stack based language in OCaml in order to get a > feeling for OCaml and also to test some ideas. Well, I didn't get far > as I wasn't even able to define the basic data structures. I guess this > is plain wrong: > > type returnState = Succeeded | Failed | Error of int > and proc = (stack -> dictionary -> returnState) > and procs = proc list > and element = > Int of int > | String of string > | Float of float > | Word of proc > and stack = element Stack.t > and dictionary = (string, procs) Hashtbl.t;; > > When compiling this, the compiler tells me that proc's definition is > cyclic. How can I circumvent this in OCaml? this is a FAQ (is this FAQ in the FAQ ?) There is two possible answer : First add the -rectype option to the compiler to allow such recursive type, Secondly, put the proc type into a constructor : type returnState = Succeeded | Failed | Error of int and proc = Proc of (stack -> dictionary -> returnState) and procs = proc list and element = Int of int | String of string | Float of float | Word of proc and stack = element Stack.t and dictionary = (string, procs) Hashtbl.t;; -- Rémi Vanicat vanicat@labri.u-bordeaux.fr http://dept-info.labri.u-bordeaux.fr/~vanicat ------------------- Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr