-
Notifications
You must be signed in to change notification settings - Fork 3
/
init.fun
65 lines (47 loc) · 1.17 KB
/
init.fun
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
lib_path : (locate lib) / "libfunstd.funso"
append : (import lib_path "append_obj")
close : (import lib_path "close_obj")
count : (import lib_path "count_obj")
do : (import lib_path "do_obj")
expand : (import lib_path "expand_obj")
hash : (import lib_path "hash_obj")
insert : (import lib_path "insert_obj")
open : (import lib_path "open_obj")
pop : (import lib_path "pop_obj")
print : (import lib_path "print_obj")
quit : (import lib_path "quit_obj")
quote : (import lib_path "quote_obj")
read : (import lib_path "read_obj")
remove : (import lib_path "remove_obj")
lambda : {
type : macro,
params : [params, body],
body : ('do
('let 'fun ': {})
('let 'fun'.'type ': 'function)
('let 'fun'.'params ': params)
('let 'fun'.'body ': ('quote body))
'fun)
}
defmacro : {
type : macro,
params : [name, params, body],
body : ('do
name ': {}
name'.'type ': 'macro
name'.'params ': params
name'.'body ': ('quote body))
}
defun : {
type : macro,
params : [name, params, body],
body : ('do
name ': ('lambda params body))
}
println : {
type : function,
params : [obj],
body : (do
(print obj)
(print "\n" 'for 'human))
}