Browse thread
Recursive Variant problem..
- Charles Bouillaguet
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Charles Bouillaguet <Charles.Bouillaguet@c...> |
| Subject: | Recursive Variant problem.. |
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.