From: Jeremy Yallop <jeremy.yallop@ed.ac.uk>
To: Dario Teixeira <darioteixeira@yahoo.com>
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Troublesome nodes
Date: Fri, 11 Jul 2008 22:20:17 +0100 [thread overview]
Message-ID: <4877CE91.6010107@ed.ac.uk> (raw)
In-Reply-To: <845241.60615.qm@web54607.mail.re2.yahoo.com>
Dario Teixeira wrote:
> Ideally, one could do something like this:
>
> type seq_t = super_node_t list
> and nonlink_node_t =
> [ `Text of string
> | `Bold of seq_t ]
> and link_node_t =
> [ Mref of string * nonlink_node_t list
> | See of string ]
> and super_node_t = [nonlink_node_t | link_node_t]
>
>
> However, this fails with an error "The type constructor nonlink_node_t is
> not yet completely defined".
Here's a slight variation of this scheme that might suit your needs.
The idea is to move the recursion from the type level to the module
level, sidestepping the restriction that you can't extend types in the
same recursive group.
module rec M :
sig
type seq_t = M.super_node_t list
type nonlink_node_t =
[ `Text of string
| `Bold of seq_t ]
type link_node_t =
[ `Mref of string * nonlink_node_t list
| `See of string ]
type super_node_t =
[ nonlink_node_t | link_node_t ]
end = M
Jeremy.
next prev parent reply other threads:[~2008-07-11 21:20 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-11 20:39 Dario Teixeira
2008-07-11 21:20 ` Jeremy Yallop [this message]
2008-07-12 12:37 ` [Caml-list] " Dario Teixeira
2008-07-12 13:25 ` Jacques Carette
2008-07-12 16:44 ` Wolfgang Lux
2008-07-12 18:21 ` Dario Teixeira
2008-07-12 18:27 ` Jeremy Yallop
2008-07-12 18:58 ` Jacques Carette
2008-07-11 23:11 ` Zheng Li
2008-07-13 14:32 ` [Caml-list] " Dario Teixeira
2008-07-13 17:39 ` Dario Teixeira
2008-07-13 21:10 ` Jon Harrop
2008-07-14 15:11 ` Dario Teixeira
2008-07-14 18:52 ` Dario Teixeira
2008-07-14 19:37 ` Jeremy Yallop
2008-07-16 21:22 ` Dario Teixeira
2008-07-17 0:43 ` Jacques Garrigue
2008-07-17 10:59 ` Jeremy Yallop
2008-07-18 2:34 ` Jacques Garrigue
2008-07-18 9:47 ` Jeremy Yallop
2008-07-18 13:02 ` Jacques Garrigue
2008-07-18 13:55 ` Jacques Garrigue
2008-07-19 2:15 ` Jacques Garrigue
2008-07-17 16:12 ` Dario Teixeira
2008-07-18 2:27 ` Jacques Garrigue
2008-07-18 13:09 ` Dario Teixeira
2008-07-18 17:36 ` Dario Teixeira
2008-07-19 2:23 ` Jacques Garrigue
2008-07-19 8:43 ` Dario Teixeira
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=4877CE91.6010107@ed.ac.uk \
--to=jeremy.yallop@ed.ac.uk \
--cc=caml-list@yquem.inria.fr \
--cc=darioteixeira@yahoo.com \
/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