caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: William Smith <sesquized@sbcglobal.net>
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] type abbreviation is cyclic
Date: Thu, 25 Oct 2007 07:22:49 -0400	[thread overview]
Message-ID: <47207C89.4090907@sbcglobal.net> (raw)


I was just writing the simplest example of the recursive definition.   I 
didn't know about -recftypes.

The distilled version of the actual case follows

type b = ((tree -> bool) * (b-> tree ->  int)) list

The first function of each pair determines whether the second function 
will be called.   The second function recurses over the subtrees, 
possibly with different b control lists as their first argument.  My 
actual example is more complex because of the details of the tree, but I 
think this is gives the flavor of what I'm trying to do. (snd b) can 
pass different list's into subtrees when it recurses.  

The actual example gets messier because another argument to snd b is a 
function that can use different rules to choose a row (or rows) from b.

It's the recursion that can happen is related to the technique of 
writing recursive functions without using let rec..

let f1 it a1 b2 = ...
let f2 it a1 b2 = ....
let f3 it a1 b2 = ...

let items = [f1; f2; f3]

let x =  f1 items a b...

Till Varoquaux wrote:

Type b doesn't exactly make much sens to me.
While I could easilly define a value of type b (fun x:int _ -> x ) I
really don't see the point. I'm gessing you'r trying to pass a chain
of alternative functions (In which case this seems to be the  wrong
way).
Could you give an exemple (without using Obj.magic) were you'd
actually need such a type.
On 10/24/07, William W Smith <sesquized@sbcglobal.net> wrote:
  

I wonder whether this error is an example of the language being defined more
restrictively than required.  What is the reason that I get these results?

type a  = int -> one -> int and one = Unused | One of a;;
type b = int -> b -> int

type a is accepted while type b is not. (b gives "The type abbreviation b is
cyclic"  However, in the uses that I intended, there won't be any actual
difference between the two.

I'd appreciate an explanation about why there is difference  between a and
b.

Thanks

Bill Smith


             reply	other threads:[~2007-10-25 11:23 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-25 11:22 William Smith [this message]
  -- strict thread matches above, loose matches on Subject: below --
2007-10-24 17:27 William W Smith
2007-10-24 17:40 ` [Caml-list] " Till Varoquaux
2007-10-24 22:01   ` Dmitri Boulytchev
2007-10-24 17:44 ` Brian Hurt
2007-10-24 18:09   ` Till Varoquaux
2007-10-24 20:40     ` Jon Harrop
2007-10-25  1:34       ` Dmitri Boulytchev
2007-10-24 21:36 ` Dmitri Boulytchev
2007-10-24 21:38 ` Dmitri Boulytchev

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=47207C89.4090907@sbcglobal.net \
    --to=sesquized@sbcglobal.net \
    --cc=caml-list@yquem.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;
as well as URLs for NNTP newsgroup(s).