caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Recursive Variant problem..
@ 2006-05-14 12:22 Charles Bouillaguet
  2006-05-15  8:09 ` [Caml-list] " Stephane Glondu
  2006-05-15 11:23 ` Jacques Garrigue
  0 siblings, 2 replies; 4+ messages in thread
From: Charles Bouillaguet @ 2006-05-14 12:22 UTC (permalink / raw)
  To: caml-list; +Cc: DooMeeR

Hello Caml-List,

I would like to write a type which describe some kind of term in a  
toy programming language. It has sets, but not sets of sets

type 'a array_ = [`Array of 'a]
type base_sort = [`Int | `Float | `Object | `Array of base_sort]  (*  
arrays of arrays are OK *)
type sort = [base_sort | `Set of  
base_sort]                                  (* sets of sets are NOT OK*)

The problem appear when I want to define my values :

type 'sort array_state = 'sort * [`ArrayStateVar of string |  
`ArrayWrite of 'me  * 'sort base_value * [`Int] base_value * 'sort  
base_value] as 'me
and 'sort base_value = 'sort * [`Inert of unit | `FieldRead of  
[`Object] base_value * 'sort field | `ArrayRead of 'sort array_state  
* ('sort array_) base_value * [`Int] base_value]
and 'sort field = 'sort * [`FieldVar of string | `FieldWrite of 'me *  
[`Object] base_value * 'sort base_value] as 'me

is refused with error :
=========================
In the definition of base_value, type
[ `Int ] array_state
should be
'a array_state
======================

I then have two questions :

a) is it possible to write that with polymorphic variants, and how ?
b) Is it possible to wrote that with Recursive modules, and how ?

I'm CC-ing my classmate Romain (Hi, Romain !), as he may be  
interested...

Charles Bouillaguet
-=-=-=-=-
Ens de Cachan, Currently visiting MIT.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-05-15 12:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-05-14 12:22 Recursive Variant problem Charles Bouillaguet
2006-05-15  8:09 ` [Caml-list] " Stephane Glondu
2006-05-15 11:23 ` Jacques Garrigue
2006-05-15 12:40   ` Jacques Garrigue

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).