1 -- ---------------------------------------------------------
2 -- step1_read_print.sql
10 -- ---------------------------------------------------------
15 CREATE FUNCTION mal.
READ(line
varchar) RETURNS integer AS $$
17 RETURN reader.
read_str(line
);
18 END; $$
LANGUAGE plpgsql
;
21 CREATE FUNCTION mal.
EVAL(ast
integer, env
varchar) RETURNS integer AS $$
24 END; $$
LANGUAGE plpgsql
;
27 CREATE FUNCTION mal.
PRINT(exp integer) RETURNS varchar AS $$
29 RETURN printer.
pr_str(exp);
30 END; $$
LANGUAGE plpgsql
;
35 CREATE FUNCTION mal.
REP(line
varchar) RETURNS varchar AS $$
37 RETURN mal.
PRINT(mal.
EVAL(mal.
READ(line
), ''));
38 END; $$
LANGUAGE plpgsql
;
40 CREATE FUNCTION mal.
MAIN(pwd
varchar) RETURNS integer AS $$
48 line
:= io.
readline('user> ', 0);
53 IF line
NOT IN ('', E
'\n') THEN
54 output := mal.
REP(line
);
55 PERFORM io.
writeline(output);
58 EXCEPTION WHEN OTHERS THEN
59 PERFORM io.
writeline('Error: ' || SQLERRM
);
62 END; $$
LANGUAGE plpgsql
;