-
Notifications
You must be signed in to change notification settings - Fork 1
/
lfe_macro.txt
78 lines (48 loc) · 2.06 KB
/
lfe_macro.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
lfe_macro(3) lfe_macro(3)
NAME
lfe_macro - Lisp Flavoured Erlang (LFE) macro expander
SYNOPSIS
This module provides an interface to the LFE macro expander. The ex‐
pander is used by the LFE compile and in the shell but can also be used
by applications explicitly wanting to handle a file.
DATA TYPES
sexpr()
An LFE s-expression, a list structure.
filesexpr() = {Sexpr,Line}
This is the format returned by lfe_io:parse_file/1 and is used by the
compiler to give better error information.
env()
This is an macro and evaluation environment as created by
lfe_lib:new_env().
EXPORTS
expand_forms([FileSexpr], Env) -> ExpRet
where
FileSexpr = filesexpr()
Env = env()
ExpRet = {yes,[FileSexpr],Env,Warnings} | {error,Errors,Warnings}
macro_forms([FileSexpr], Env) -> {[FileSexpr],Env}.
where
FileSexpr = filesexpr()
Env = env()
expand_expr_all(Sexpr, Env) -> Sexpr.
where
Sexpr = sexpr()
Env = env()
Expand all macros in Sexpr either using the definitions in Env or just
the default macros. Note that any eventual new macro definitions will
be lost.
expand_expr(Sexpr, Env) -> {yes,Exp} | no.
expand_expr_1(Sexpr, Env) -> {yes,Exp} | no.
where
Sexpr = Exp = sexpr()
Env = env()
Test if the top s-expression here is a macro call, if so expand it and
return {yes,Expansion}, if not then return no. expand_expr/2 will ex‐
pand the top s-expression as much as possible while expand_expr_1/2
will only try it once. These functions use the macro definitions in
the environment and the standard pre-defined macros.
SEE ALSO
lfe_comp(3), lfe_gen(3)
AUTHORS
Robert Virding.
2008-2016 lfe_macro(3)