aboutsummaryrefslogtreecommitdiffstats
path: root/src/bootstrap/primitives.h
blob: f874b17f6705f96b52af3f4eee8a2a179606dd04 (plain)
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
#ifndef BDL_PRIMITIVES_H
#define BDL_PRIMITIVES_H

// Function evaluation.
Object * eval(Environment *env, Object *root);

// Evaluation functions.
Object * proc_quote(Environment *env, Object *obj);
Object * proc_eval(Environment *env, Object *obj);

// Arithmetic.
Object * proc_sum(Environment *env, Object *obj);
Object * proc_sub(Environment *env, Object *obj);
Object * proc_mul(Environment *env, Object *obj);
Object * proc_div(Environment *env, Object *obj);
Object * proc_mod(Environment *env, Object *obj);

// Printing.
Object * proc_display(Environment *env, Object *obj);
Object * proc_print(Environment *env, Object *obj);
Object * proc_newline(Environment *env, Object *obj);

// Type checking.
Object * proc_is_boolean(Environment *env, Object *obj);
Object * proc_is_nil(Environment *env, Object *obj);
Object * proc_is_symbol(Environment *env, Object *obj);
Object * proc_is_string(Environment *env, Object *obj);
Object * proc_is_fixnum(Environment *env, Object *obj);
Object * proc_is_pair(Environment *env, Object *obj);
Object * proc_is_procedure(Environment *env, Object *obj);
Object * proc_is_error(Environment *env, Object *obj);

// Logical operations.
Object * proc_not(Environment *env, Object *obj);
Object * proc_and(Environment *env, Object *obj);
Object * proc_or(Environment *env, Object *obj);
Object * proc_cond(Environment *env, Object *obj);
Object * proc_num_less_than(Environment *env, Object *obj);
Object * proc_num_greater_than(Environment *env, Object *obj);
Object * proc_num_lesseq_than(Environment *env, Object *obj);
Object * proc_num_greatereq_than(Environment *env, Object *obj);
Object * proc_num_equal(Environment *env, Object *obj);
Object * proc_equal(Environment *env, Object *obj);

// List operations.
Object * proc_car(Environment *env, Object *obj);
Object * proc_cdr(Environment *env, Object *obj);
Object * proc_cons(Environment *env, Object *obj);
Object * proc_list(Environment *env, Object *obj);

// Environment/variable manipulation.
Object * proc_define(Environment *env, Object *obj);
Object * proc_set(Environment *env, Object *obj);
Object * proc_lambda(Environment *env, Object *obj);
Object * proc_fun(Environment *env, Object *obj);

// Runtinme configuration.
Object * proc_supress_errors(Environment *env, Object *obj);

#endif // BDL_PRIMITIVES_H