Previous Up Next

Interface for module Types

type s = Symbol.symbol (∗ string/label ∗)
type pos = Absynt.pos

type unique = unit ref

type ty =
     INT
   ∣ STRING 
   ∣ BOOL
   ∣ RECORD of r_ty
   ∣ ARRAY of ty
   ∣ NIL (∗ for nil = empty record? ∗)
   ∣ UNIT (∗ type for returning no value ∗)
   ∣ NAME of s (∗ Appel proposes a reference here ∗)
(∗ | UNDEF ∗)
and r_ty = (s × tylist (∗ for records ∗)

type type_error =
     Nondescript of pos
   ∣ Insteadof of pos × ty × ty
   ∣ Insteadofrecord of pos × ty 
   ∣ Insteadofarray of pos × ty 
   ∣ Typemismatch of pos × ty × ty
   ∣ Noncomparable of pos × ty 
   ∣ Recordlength of pos
   ∣ Recordnonuniquefield of pos × s
   ∣ Recordfieldinsteadof of pos × s × s
   ∣ FunctionArgsLength of pos
   ∣ FieldMismatch of pos
   ∣ NoSuchField of pos × s
   ∣ IncompatibleTypes of pos × ty × ty
   ∣ UndefTypeSymbol of pos × s
   ∣ IncompatibleTypesInDec of pos × ty × ty
   ∣ WrongApplication of pos × s
   ∣ UndefVariable of pos × string
   ∣ UndefFun of pos × s
   ∣ IllegalBreak of pos (∗ probably not a type error ∗)
   ∣ Impossible of pos

Two functions for diagnostic output, for instance when indicating type checking errors.
val to_stringty → string 
val error_to_stringtype_error → string

 ,
Previous Up Next