caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Jacques Garrigue <garrigue@kurims.kyoto-u.ac.jp>
To: zhudp@cs.bu.edu
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] recursive type declaration
Date: Sat, 01 Jun 2002 17:26:11 +0900	[thread overview]
Message-ID: <20020601172611W.garrigue@kurims.kyoto-u.ac.jp> (raw)
In-Reply-To: <Pine.SOL.4.20.0205311458110.1622-100000@csa.bu.edu>

From: dengping zhu <zhudp@cs.bu.edu>
> Now I want to define a type and a class, both of which are recursive
> defined as follows:
> ----------------
> type ty1 =
>    | Int of int
>    | String of string
>    | Class of typeClass
> 
> class virtual typeClass =
>    object
>       method virtual typeCon : ty1
>    end;;
> -----------------
> However, it does not work. 
> I can use another way to solve it by define ty1 as 'a ty1. Besides this
> way, is there any method to solve it? What's more, what's the common way
> to define such types?

I believe this is a FAQ.

Just parameterize one one of the two.
For instance:

type 'tc ty1 =
   | Int of int
   | String of string
   | Class of 'tc

class virtual typeClass =
   object
      method virtual typeCon : typeClass ty1
   end;;

Arguably, this is a misfeature of the language that you cannot define
the two together, but then recursive class definitions and type
definitions do not handle constraints in the same way, so this would
be hard to mix them properly.

Jacques Garrigue
-------------------
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


  reply	other threads:[~2002-06-01  8:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-31 21:56 dengping zhu
2002-06-01  8:26 ` Jacques Garrigue [this message]
2002-06-02  9:08   ` William Lovas

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=20020601172611W.garrigue@kurims.kyoto-u.ac.jp \
    --to=garrigue@kurims.kyoto-u.ac.jp \
    --cc=caml-list@inria.fr \
    --cc=zhudp@cs.bu.edu \
    /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;
as well as URLs for NNTP newsgroup(s).