Objective Label Trilogy, summer edition

From: Jacques GARRIGUE (garrigue@kurims.kyoto-u.ac.jp)
Date: Thu Jul 15 1999 - 10:31:16 MET DST


To: caml-list@inria.fr
Subject: Objective Label Trilogy, summer edition
Message-Id: <19990715173116L.garrigue@kurims.kyoto-u.ac.jp>
Date: Thu, 15 Jul 1999 17:31:16 +0900
From: Jacques GARRIGUE <garrigue@kurims.kyoto-u.ac.jp>

It is my pleasure to annouce

        The Objective Label Trilogy, Summer 1999 edition

                Objective Label compiler
                LablTk GUI
                LablBrowser development tool

Objective Label extends Objective Caml with labeled and optional
parameters, polymorphic variants, and explicit polymorphism for
methods.
As Objective Label 2.02, this version is based on Objective Caml 2.00,
but it has profited from a few months of intensive use to correct many
bugs, and improve some details.

You can find it at:

        http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/
        ftp://ftp.kurims.kyoto-u.ac.jp/pub/lang/olabl/olabl-2.02-summer.tar.gz

Changes:

  * many bug fixes in the type system
    (one real hole, and many small problems)

  * record fields can be inferred from context.
    This is related to the recent message about field name overloading.
    As long as you know its type, you can access a record's field
    without giving its full module path. This also works if the field
    name is hidden by another definition. Here is an extensive example.

        # type point = { mutable x : int; y : int };;
        type point = { mutable x: int; y : int }
        # type box = { x : bool };;
        type box = { x: bool }
        # type 'a box = { x : 'a };;
        type 'a box = { x: 'a }
        # {x="hello"};;
        - : string box = {x="hello"}
        # {x=1;y=2};;
        The label y belongs to the type point but is here mixed with
        labels of type int box
        # let p : point = {x=1;y=2};;
        val p : point = {x=1; y=2}
        # p.x;;
        - : int = 1
        # p.x <- 3;;
        - : unit = ()

    (This is an experimental feature, and may disappear in future versions)

  * cleaned-up the type propagation semantics (needed for record
    fields, labeled method calls, ...)
    Application order is now relevant.

---------------------------------------------------------------------------
Jacques Garrigue Kyoto University garrigue at kurims.kyoto-u.ac.jp
                <A HREF=http://wwwfun.kurims.kyoto-u.ac.jp/~garrigue/>JG</A>



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