Merge pull request #345 from asarhaddon/ada.2
[jackhill/mal.git] / objpascal / mal_func.pas
CommitLineData
0067158f
JM
1unit mal_func;
2
3interface
4
5uses mal_types,
6 mal_env;
7
8// Some general type definitions
9
10type
11 TMalCallable = function (Args : TMalArray) : TMal;
12
13type TMalFunc = class(TMal)
14 public
15 Val : TMalCallable;
16 Ast : TMal;
17 Env : TEnv;
18 Params : TMalList;
19 isMacro : Boolean;
20 Meta : TMal;
21
22 constructor Create(V : TMalCallable);
23 constructor Create(A : TMal;
24 E : TEnv;
25 P : TMalList);
26
27 constructor Clone(F : TMalFunc);
28end;
29
30////////////////////////////////////////////////////////////
31
32implementation
33
34constructor TMalFunc.Create(V : TMalCallable);
35begin
36 inherited Create();
37 Self.Val := V;
38end;
39
40constructor TMalFunc.Create(A : TMal;
41 E : TEnv;
42 P : TMalList);
43begin
44 inherited Create();
45 Self.Ast := A;
46 Self.Env := E;
47 Self.Params := P;
48end;
49
50constructor TMalFunc.Clone(F : TMalFunc);
51begin
52 Self.Create(F.Ast, F.Env, F.Params);
53 Self.isMacro := F.isMacro;
54 Self.Meta := F.Meta;
55end;
56
57end.