Return-Path: <john.harrison-request@uk.ac.cam.cl>
Delivery-Date: 
Received: from ted.cs.uidaho.edu by swan.cl.cam.ac.uk with SMTP (PP-6.2);
          Wed, 23 Dec 1992 13:23:32 +0000
Received: by ted.cs.uidaho.edu (16.6/1.34) id AA10139;
          Wed, 23 Dec 92 05:11:03 -0800
Sender: info-hol-request@edu.uidaho.cs.ted
Errors-To: info-hol-request@edu.uidaho.cs.ted
Precedence: bulk
Received: from scylla.oracorp.com by ted.cs.uidaho.edu (16.6/1.34) id AA10134;
          Wed, 23 Dec 92 05:10:56 -0800
Received: from sparta.oracorp.com by oracorp.com (4.1/2.1-ORA Corporation) 
          id AA06891; Wed, 23 Dec 92 08:10:15 EST
Date: Wed, 23 Dec 92 08:09:35 EST
From: shb@com.oracorp
Received: by sparta.oracorp.com (4.1/1.3-ORA Corporation) id AA02406;
          Wed, 23 Dec 92 08:09:35 EST
Message-Id: <9212231309.AA02406@sparta.oracorp.com>
To: info-hol@edu.uidaho.cs.ted
Subject: define_type extension?

Is there some profound reason why

  define_type `foo` `foo = bar1 | bar2 (foo)list`;;

gets the response

  evaluation failed     ill-formed type expression(s)  ?

I can see why expressions defining foo in terms of function types
involving foo are sometimes impossible to handle, but there's an
obvious recursive algorithm for telling whether an object is an object
of type foo.  The mut_rec_types contrib entry extends define_type, but
I can't test trying to get the same effect with it because its makefile
fails at our site for some reason I haven't figured out.  Has anyone
made an extension of define_type that recognizes lists as exceptionally
easy and handles them correctly?

Steve Brackin
ORA
