76979d258aecf051ee1d94ccec30f5344f92af72
[jackhill/mal.git] / gst / func.st
1 Object subclass: Func [
2 | ast params env fn isMacro meta |
3
4 ast [ ^ast ]
5 params [ ^params ]
6 env [ ^env ]
7 fn [ ^fn ]
8 isMacro [ ^isMacro ]
9 meta [ ^meta ]
10
11 isMacro: bool [
12 isMacro := bool
13 ]
14
15 meta: aMeta [
16 meta := aMeta
17 ]
18
19 Func class >> new: ast params: params env: env fn: fn [
20 | func |
21 func := super new.
22 func init: ast params: params env: env fn: fn.
23 ^func
24 ]
25
26 init: anAst params: someParams env: anEnv fn: aFn [
27 ast := anAst.
28 params := someParams.
29 env := anEnv.
30 fn := aFn.
31 isMacro := false
32 ]
33
34 withMeta: meta [
35 | func |
36 func := self deepCopy.
37 func meta: meta.
38 ^func
39 ]
40 ]