From: Remi VANICAT <vanicat@labri.u-bordeaux.fr>
To: caml-list@inria.fr
Subject: Re: [Caml-list] Newbie question concerning type definitions
Date: 11 Oct 2001 09:11:25 +0200 [thread overview]
Message-ID: <87g08qejmq.dlv@wanadoo.fr> (raw)
In-Reply-To: <3BC55BCA.15676.5F0873@localhost>
"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
prev parent reply other threads:[~2001-10-11 7:11 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-11 6:43 Thomas Link
2001-10-11 7:11 ` Remi VANICAT [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87g08qejmq.dlv@wanadoo.fr \
--to=vanicat@labri.u-bordeaux.fr \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox