git @ Cat's Eye Technologies Robin / 9e91a26
Updates to TODO and HISTORY. Chris Pressey 1 year, 5 months ago
2 changed file(s) with 24 addition(s) and 6 deletion(s). Raw diff Collapse all Expand all
33 Robin 0.8
44 ---------
55
6 * The `macro` form no longer provides the `self`
6 * What was previously known as a `macro` is now known
7 as a `fexpr`.
8 * The `fexpr` form no longer provides the `self`
79 argument to its definition. If recursion is desired
8 in the definition of a macro, the macro should be
10 in the definition of a fexpr, the fexpr should be
911 written recursively (in the same way functions have
1012 traditionally been written recursively in Robin: pass
11 the macro itself as the first argument to the macro.)
12 The Robin definitions of macros in the standard library
13 the fexpr itself as the first argument to the fexpr.)
14 The Robin definitions of fexprs in the standard library
1315 such as `let` and `list` have been rewritten this way.
14 * The object that a `macro` form evaluates to is no
16 * The object that calling `fexpr` or `fun` produces is no
1517 longer called a "macro". It is an "operator". There
1618 there are other ways to obtain an operator than applying
17 a `macro` form (for instance there have always been
19 a `fexpr` or `fun` (for instance there have always been
1820 intrinsic operators; it's not fair to call them "macros".)
1921 * When a reactor produces an abort value, it does not cause
2022 a further event reporting the abort value to occur.
11 ====
22
33 (Note, some of these are possibly long-term plans.)
4
5 Macros
6 ------
7
8 Just as we have defined `fun` in terms of fexprs, we can
9 define `macro` in terms of fexprs. (It is expected to
10 return a literal chunk of program, which we then evaluate.)
11
12 It would just be a fexpr that evaluates (in the calling
13 environment) what the body evaluates to.
14
15 For static analysis (see below), it could also annotate
16 the value with a version whose return value does not get
17 evaluated. This annotation "expand-macro" could be used
18 by static analyzers to expand the macro to a form which
19 they can then continue to analyze.
420
521 Static analysis of fexprs
622 -------------------------