Version française
Home     About     Download     Resources     Contact us    
Browse thread
Llama Light: a simple implementation of Caml
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Jeremy Bem <jeremy1@g...>
Subject: Re: [Caml-list] Llama Light: a simple implementation of Caml
bluestorm:

Thank you for the bug report.  The toplevel issue has been fixed in the
version now posted.

Do you see a nice way to add let-generalization without reintroducing "type
levels"?  I was pleased to remove those.

Ivan:

It was originally forked from Caml Light but now includes more code from
OCaml.  The typechecker is mostly original code at this point; the compiler
is OCaml's with minimal changes to accommodate the new typechecker; the
runtime is almost identical to OCaml's.

-Jeremy

On Sun, Aug 29, 2010 at 6:52 AM, bluestorm <bluestorm.dylc@gmail.com> wrote:

> When using the toplevel, declaration phrases fail (looks like a linking
> problem), but expressions work as intented :
>
>> $ llama
>
>         Llama Light version 0.0828
>
> # 1 + 1;;
>
> - : int = 2
>
> # let x = 1 + 1;;
>
> Error: Reference to undefined global `Toploop'
>
>
> I made my tests using "llamac -i foo.ml".
>
>
> I found it startling that the most important difference to my eyes are
> buried, on the web page, under lines of relatively boring documentation :
>
> In Llama Light (and in contrast to other Caml implementations):
>
>
>> - let does not generalize.
>
> - Phrases are generalized immediately. In particular, "let foo = ref []"
>> does not typecheck.
>
> - The value restriction is not relaxed. (This is similar to Caml Light.)
>
>
>> These choices simplify the implementation while having relatively little
>> impact on the user.
>
>
> You cite the "Let Should Not Be Generalised" paper. There is however a
> difference in your application of the maxim : in the paper, local let that
> have polymorphic type annotations are generalised, while in your system it
> is not possible to force generalisation.
>
> I had a look at the typer, and it's indeed rather simple; it seems it would
> be quite simple to implement generalized let (when encountering annotations
> or with a different syntaxic construct : "letg .. = .. in ..."), but the
> added complexity is equivalent to adding let generalization by default.
>
> Is the presence of let-generalization a real issue in your work ?
>