1 function printer_pr_list
(expr
, print_readably
, idx
, len
, i
, str
)
4 len = types_heap
[idx
]["len"]
5 for (i =
0; i
< len
; ++i
) {
6 str = str printer_pr_str
(types_heap
[idx
][i
], print_readably
) " "
8 return substr(str
, 1, length(str
) - 1)
11 function printer_pr_hash
(expr
, print_readably
, idx
, var
, str
)
14 for (var in types_heap
[idx
]) {
17 str = str printer_pr_string(var, print_readably) " " printer_pr_str(types_heap[idx][var], print_readably) " "
20 str = str substr(var, 2) " " printer_pr_str(types_heap[idx][var], print_readably) " "
24 return substr(str, 1, length(str) - 1)
27 function printer_pr_string(expr, print_readably, v, r)
29 if (!print_readably) {
30 return substr(expr, 2)
32 expr = substr(expr, 2)
33 while (match(expr, /["\n\\]/, r
)) {
34 v = v
substr(expr
, 1, RSTART - 1) (r
[0] ==
"\n" ?
"\\n" : "\\" r
[0])
35 expr =
substr(expr
, RSTART + RLENGTH)
37 return "\"" v expr
"\""
40 function printer_pr_str
(expr
, print_readably
, var
)
44 return "(" printer_pr_list
(expr
, print_readably
) ")"
46 return "[" printer_pr_list
(expr
, print_readably
) "]"
48 return "{" printer_pr_hash
(expr
, print_readably
) "}"
50 return printer_pr_string(expr, print_readably)
53 return "#<Function> (fn* " printer_pr_str(types_heap[var]["params"], print_readably) " " printer_pr_str(types_heap[var]["body"], print_readably) ")"
55 return "#<BuiltinFunction " env_builtinnames
[substr(expr
, 2)] ">"
57 return "#<BuiltinFunction " env_builtinnames
[types_heap
[substr(expr
, 2)]["func"]] ">"
59 return "(atom " printer_pr_str
(types_heap
[substr(expr
, 2)]["obj"], print_readably
) ")"
61 return substr(expr
, 2)