[Omake] SVN Commit: OMake Build System [0.9.8.x] (Rev. 12555)

Jason J. Hickey jyh at cs.caltech.edu
Sun Nov 4 11:04:55 PST 2007


This drops the recursive quote in favor of the non-recursive quote,
more like Lisp-style.  This is a major code simplification, and more
intuitive too.

There is a semantic change--quoting is not recursive.
Before:
    osh> println($`(printvln $y))
    $(apply global.y)
Now we get: unbound variable: global.y

To get the previous behavior, two quotes must be used.

    println($`(printvln $`y))
    $(global.y) : Exp

Eager quotes are transformed at compile time into private bindings.
    $`(f $,y)
    <-->
    private."eager.x1" = $y in
    $`(f $(eager.x1))
The "eager.x1" is a variable name containing a dot.

NOTE: the way I have done it now, unquotes are nested too, and there
is no double-unquote.

    $`(x $`(y $,z))   # $,z belongs to the inner quote

Actually, thinking about Lisp, this is probably wrong.  I'll change
it.

----
Changes in omake-branches/0.9.8.x:
    +2 -2       src/build/omake_rule.ml
    +0 -24      src/builtin/omake_builtin_object.ml
    +16 -54     src/env/omake_command_digest.ml
    +103 -35    src/env/omake_ir_ast.ml
    +13 -6      src/env/omake_ir_semant.ml
    +88 -246    src/eval/omake_eval.ml
    +1 -2       src/eval/omake_eval.mli
    +0 -32      src/eval/omake_value.ml
    +6 -14      src/ir/omake_ir.ml
    +9 -4       src/ir/omake_ir_free_vars.ml
    +22 -29     src/ir/omake_ir_print.ml
    +0 -32      src/ir/omake_value_print.ml
    +0 -4       src/ir/omake_value_type.ml
    +1 -5       src/main/omake_shell.ml
    Properties  test/lazy/
    Added       test/lazy/Test1
 
A hyperlinked version of this commit is available at
http://svn.metaprl.org/commitlogs/omake/2007-11.html#07/11/04.11:04:55



More information about the OMake-CVS mailing list