grammar for class types

From: Hendrik Tews (
Date: Fri May 14 1999 - 18:59:37 MET DST

Date: Fri, 14 May 1999 18:59:37 +0200
Message-Id: <>
From: Hendrik Tews <>
Subject: grammar for class types


when I tried to define some classes and class types I came across
the following questions:

1. What is the difference between

# class type b = [int, string] a;;


# type c = (int, string) a;;

assuming some class type a with two type parameters?

And Why do I have to use different parentheses in both cases?
(Yes, I know, it's what the manual says, but I would expect that
one kind of parentheses should be enough for all kind of type
parameters. )

2. Why is it not possible to add type constraints to the first
kind of type abbreviation, like in

class type ['a] c = ['a, string] a constraint 'a = int;;

3. (To re-raise a question from John Prevost which has never been
addressed:) Why is it not possible to mix type definitions and
class type definitions like in

# class type a = object method m : a end
# and
# type b = Node of a | Tree of b * b

(Yes, it is possible to use the < ... > notation, but it is not
possible to use # with such types.)



This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:22 MET