Commit | Line | Data |
---|---|---|
4d1456b9 JM |
1 | ..printer.. <- TRUE |
2 | ||
3 | if(!exists("..types..")) source("types.r") | |
4 | ||
01feedfe JM |
5 | .pr_list <- function(..., print_readably=TRUE, join="") { |
6 | concatl(lapply(list(...), | |
7 | function(e) .pr_str(e, print_readably)), sep=join) | |
8 | } | |
9 | ||
4d1456b9 | 10 | .pr_str <- function(exp, print_readably=TRUE) { |
01feedfe | 11 | pr <- print_readably |
4d1456b9 JM |
12 | switch(class(exp), |
13 | "List"={ | |
01feedfe | 14 | data <- paste(lapply(exp, function(e) .pr_str(e, pr)), |
4d1456b9 JM |
15 | sep="", collapse=" ") |
16 | paste("(", data, ")", sep="", collapse="") | |
17 | }, | |
18 | "Vector"={ | |
01feedfe | 19 | data <- paste(lapply(exp, function(e) .pr_str(e, pr)), |
4d1456b9 JM |
20 | sep=" ", collapse=" ") |
21 | paste("[", data, "]", sep="", collapse="") | |
22 | }, | |
23 | "character"={ | |
24 | if (print_readably) { | |
01feedfe JM |
25 | paste("\"", |
26 | gsub("\\n", "\\\\n", | |
27 | gsub("\\\"", "\\\\\"", | |
28 | gsub("\\\\", "\\\\\\\\", exp))), | |
29 | "\"", sep="", collapse="") | |
4d1456b9 JM |
30 | } else { |
31 | exp | |
32 | } | |
33 | }, | |
c30efef4 | 34 | "Symbol"={ exp }, |
01feedfe | 35 | "nil"={ "nil" }, |
4d1456b9 | 36 | "logical"={ tolower(exp) }, |
01feedfe JM |
37 | "MalFunc"={ |
38 | paste("(fn* ", .pr_str(exp$params,TRUE), | |
39 | " ", .pr_str(exp$ast, FALSE), ")", sep="") | |
40 | }, | |
4d1456b9 JM |
41 | "function"={ "<#function>" }, |
42 | { toString(exp) }) | |
43 | } | |
44 | ||
45 |