(List (Com {[LIT_CHARS source]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /reader.sh]} ) (Com {[LIT_CHARS source]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /printer.sh]} ) (Com {[LIT_CHARS source]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /env.sh]} ) (Com {[LIT_CHARS source]} {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub 0]})] [LIT_CHARS /core.sh]} ) (FunctionDef READ [] (List (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "]"]} ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('r', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS READLINE]} ) ) ) (Com {[LIT_CHARS READ_STR]} {[DQ [VarSub r]]} ) ) ) (FunctionDef IS_PAIR [] (List (If (Com {[LIT_CHARS _sequential] [LIT_OTHER "?"]} {[DQ [VarSub 1]]} ) (List (Com {[LIT_CHARS _count]} {[DQ [VarSub 1]]} ) (AndOr OP_AND_IF (DBracket {B2 BINARY_STRING_GREAT {[DQ [VarSub r]]} {[LIT_CHARS 0]}}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (FunctionDef QUASIQUOTE [] (List (If (Pipeline! (Com {[LIT_CHARS IS_PAIR]} {[DQ [VarSub 1]]} ) ) (List (Com {[LIT_CHARS _symbol]} {[LIT_CHARS quote]} ) (Com {[LIT_CHARS _list]} {[DQ [VarSub r]]} {[DQ [VarSub 1]]} ) (Com {[LIT_CHARS return]} ) ) (ElseTrue) (List (Com {[LIT_CHARS _nth]} {[DQ [VarSub 1]]} {[LIT_CHARS 0]} ) (= scope= flags=0 words=[] bindings=[('a0', {[DQ [VarSub r]]})]) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub a0]]}})]]} {[DQ [LIT_CHARS unquote]]}}) (List (Com {[LIT_CHARS _nth]} {[DQ [VarSub 1]]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS return]} ) ) (Com {[LIT_CHARS IS_PAIR]} {[DQ [VarSub a0]]} ) (List (Com {[LIT_CHARS _nth]} {[DQ [VarSub a0]]} {[LIT_CHARS 0]} ) (= scope= flags=0 words=[] bindings=[('a00', {[DQ [VarSub r]]})]) (If (DBracket {B2 BINARY_STRING_EQUAL {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub a00]]}})]]} {[DQ [LIT_CHARS splice-unquote]]}}) (List (Com {[LIT_CHARS _symbol]} {[LIT_CHARS concat]} ) (= scope= flags=0 words=[] bindings=[('a', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS _nth]} {[DQ [VarSub a0]]} {[LIT_CHARS 1]} ) (= scope= flags=0 words=[] bindings=[('b', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS _rest]} {[DQ [VarSub 1]]} ) (Com {[LIT_CHARS QUASIQUOTE]} {[DQ [VarSub r]]} ) (= scope= flags=0 words=[] bindings=[('c', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS _list]} {[DQ [VarSub a]]} {[DQ [VarSub b]]} {[DQ [VarSub c]]} ) (Com {[LIT_CHARS return]} ) ) ) ) ) ) ) (Com {[LIT_CHARS _symbol]} {[LIT_CHARS cons]} ) (= scope= flags=0 words=[] bindings=[('a', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS QUASIQUOTE]} {[DQ [VarSub a0]]} ) (= scope= flags=0 words=[] bindings=[('b', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS _rest]} {[DQ [VarSub 1]]} ) (Com {[LIT_CHARS QUASIQUOTE]} {[DQ [VarSub r]]} ) (= scope= flags=0 words=[] bindings=[('c', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS _list]} {[DQ [VarSub a]]} {[DQ [VarSub b]]} {[DQ [VarSub c]]} ) (Com {[LIT_CHARS return]} ) ) ) (FunctionDef IS_MACRO_CALL [] (List (If (Pipeline! (Com {[LIT_CHARS _list] [LIT_OTHER "?"]} {[DQ [VarSub 1]]} ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) (Com {[LIT_CHARS _nth]} {[DQ [VarSub 1]]} {[LIT_CHARS 0]} ) (= scope= flags=0 words=[] bindings=[('a0', {[DQ [VarSub r]]})]) (If (Com {[LIT_CHARS _symbol] [LIT_OTHER "?"]} {[DQ [VarSub a0]]} ) (List (Com {[LIT_CHARS ENV_FIND]} {[DQ [VarSub 2]]} {[DQ [VarSub a0]]} ) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub r]]}}) (List (Com {[LIT_CHARS ENV_GET]} {[DQ [VarSub 2]]} {[DQ [VarSub a0]]} ) (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub r][LIT_CHARS _ismacro_]]}})]]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS return]} {[VarSub ?]} ) ) ) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (FunctionDef MACROEXPAND [] (List (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub 1]]}), ('env', {[DQ [VarSub 2]]})]) (While (Com {[LIT_CHARS IS_MACRO_CALL]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]} ) (List (Com {[LIT_CHARS _nth]} {[DQ [VarSub ast]]} {[LIT_CHARS 0]} ) (= scope= flags=0 words=[] bindings=[('a0', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS ENV_GET]} {[DQ [VarSub env]]} {[DQ [VarSub a0]]} ) (= scope= flags=0 words=[] bindings=[('mac', {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub r]]}})]]})]) (Com {[LIT_CHARS _rest]} {[DQ [VarSub ast]]} ) (Com {[VarSub mac transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "@*"]}]]} {[VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub r]]}})]} ) (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub r]]})]) ) ) (= scope= flags=0 words=[] bindings=[('r', {[DQ [VarSub ast]]})]) ) ) (FunctionDef EVAL_AST [] (List (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub 1]]}), ('env', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS _obj_type]} {[DQ [VarSub ast]]} ) (= scope= flags=0 words=[] bindings=[('ot', {[DQ [VarSub r]]})]) (Case to_match={[DQ [VarSub ot]]}, pat_word_list=[[{[LIT_CHARS symbol]}], [{[LIT_CHARS list]}], [{[LIT_CHARS vector]}], [{[LIT_CHARS hash_map]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS ENV_GET]} {[DQ [VarSub env]]} {[DQ [VarSub ast]]} ) (Com {[LIT_CHARS return]} ) ) (Com {[LIT_CHARS _map_with_type]} {[LIT_CHARS _list]} {[LIT_CHARS EVAL]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]} ) (Com {[LIT_CHARS _map_with_type]} {[LIT_CHARS _vector]} {[LIT_CHARS EVAL]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]} ) (List (= scope= flags=0 words=[] bindings=[('res', {[DQ ]}), ('key', {[SQ ]}), ('val', {[DQ ]}), ('hm', {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub ast]]}})]]})]) (Com {[LIT_CHARS _hash_map]} ) (= scope= flags=0 words=[] bindings=[('new_hm', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS eval]} {[LIT_CHARS local]} {[LIT_VAR_LIKE "keys="] [DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{!"][VarSub hm][LIT_CHARS "[@]}"]] =} ) (For key [{[VarSub keys]}]) (List (Com {[LIT_CHARS eval]} {[LIT_VAR_LIKE "val="] [DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{"][VarSub hm][LIT_CHARS "["][\ LIT_ESCAPED_CHAR "\\\""][VarSub key][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "]}"]] =} ) (Com {[LIT_CHARS EVAL]} {[DQ [VarSub val]]} {[DQ [VarSub env]]} ) (Com {[LIT_CHARS _assoc] [LIT_OTHER "!"]} {[DQ [VarSub new_hm]]} {[DQ [VarSub key]]} {[DQ [VarSub r]]} ) ) ) (= scope= flags=0 words=[] bindings=[('r', {[DQ [VarSub new_hm]]})]) ) (= scope= flags=0 words=[] bindings=[('r', {[DQ [VarSub ast]]})]) ) ) ) (FunctionDef EVAL [] (List (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub 1]]}), ('env', {[DQ [VarSub 2]]})]) (While (Com {[LIT_CHARS true]} ) (List (= scope= flags=0 words=[] bindings=[('r', {[SQ ]})]) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) (If (Pipeline! (Com {[LIT_CHARS _list] [LIT_OTHER "?"]} {[DQ [VarSub ast]]} ) ) (List (Com {[LIT_CHARS EVAL_AST]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]} ) (Com {[LIT_CHARS return]} ) ) ) (Com {[LIT_CHARS MACROEXPAND]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]} ) (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub r]]})]) (If (Pipeline! (Com {[LIT_CHARS _list] [LIT_OTHER "?"]} {[DQ [VarSub ast]]} ) ) (Com {[LIT_CHARS return]} ) ) (Com {[LIT_CHARS _nth]} {[DQ [VarSub ast]]} {[LIT_CHARS 0]} ) (= scope= flags=0 words=[] bindings=[('a0', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS _nth]} {[DQ [VarSub ast]]} {[LIT_CHARS 1]} ) (= scope= flags=0 words=[] bindings=[('a1', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS _nth]} {[DQ [VarSub ast]]} {[LIT_CHARS 2]} ) (= scope= flags=0 words=[] bindings=[('a2', {[DQ [VarSub r]]})]) (Case to_match={[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub a0]]}})]]}, pat_word_list=[[{[LIT_CHARS def] [LIT_OTHER "!"]}], [{[LIT_CHARS let] [LIT_OTHER "*"]}], [{[LIT_CHARS quote]}], [{[LIT_CHARS quasiquote]}], [{[LIT_CHARS defmacro] [LIT_OTHER "!"]}], [{[LIT_CHARS macroexpand]}], [{[LIT_CHARS try] [LIT_OTHER "*"]}], [{[LIT_CHARS do]}], [{[LIT_CHARS if]}], [{[LIT_CHARS fn] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS EVAL]} {[DQ [VarSub a2]]} {[DQ [VarSub env]]} ) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) (Com {[LIT_CHARS ENV_SET]} {[DQ [VarSub env]]} {[DQ [VarSub a1]]} {[DQ [VarSub r]]} ) (Com {[LIT_CHARS return]} ) ) (List (Com {[LIT_CHARS ENV]} {[DQ [VarSub env]]} ) (= scope= flags=0 words=[] bindings=[('let_env', {[DQ [VarSub r]]})]) (= scope= flags=0 words=[] bindings=[('let_pairs', {[Array {[VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub a1]]}})]}]})]) (= scope= flags=0 words=[] bindings=[('idx', {[LIT_CHARS 0]})]) (While (DBracket {B1 UNARY_STRING_n {[DQ [VarSub let_pairs bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub idx]]}})]]}}) (List (Com {[LIT_CHARS EVAL]} {[DQ [VarSub let_pairs bracket_op=(Index {A Atom NODE_ARITH_WORD {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub idx]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]}})]]} {[DQ [VarSub let_env]]} ) (Com {[LIT_CHARS ENV_SET]} {[DQ [VarSub let_env]]} {[DQ [VarSub let_pairs bracket_op=(Index {A Atom NODE_ARITH_WORD {[VarSub idx]}})]]} {[DQ [VarSub r]]} ) (= scope= flags=0 words=[] bindings=[('idx', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub idx]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 2]}}}]})]) ) ) (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub a2]]})]) (= scope= flags=0 words=[] bindings=[('env', {[DQ [VarSub let_env]]})]) ) (List (= scope= flags=0 words=[] bindings=[('r', {[DQ [VarSub a1]]})]) (Com {[LIT_CHARS return]} ) ) (List (Com {[LIT_CHARS QUASIQUOTE]} {[DQ [VarSub a1]]} ) (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub r]]})]) ) (List (Com {[LIT_CHARS EVAL]} {[DQ [VarSub a2]]} {[DQ [VarSub env]]} ) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) (Com {[LIT_CHARS ANON] [LIT_DBRACKET_LIKE "["] [DQ [VarSub r][LIT_CHARS _ismacro_]] [LIT_DBRACKET_LIKE "]="] [DQ [LIT_CHARS yes]]} ) (Com {[LIT_CHARS ENV_SET]} {[DQ [VarSub env]]} {[DQ [VarSub a1]]} {[DQ [VarSub r]]} ) (Com {[LIT_CHARS return]} ) ) (List (Com {[LIT_CHARS MACROEXPAND]} {[DQ [VarSub a1]]} {[DQ [VarSub env]]} ) (Com {[LIT_CHARS return]} ) ) (List (Com {[LIT_CHARS EVAL]} {[DQ [VarSub a1]]} {[DQ [VarSub env]]} ) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_z {[DQ [VarSub __ERROR]]}}) (Com {[LIT_CHARS return]} ) ) (Com {[LIT_CHARS _nth]} {[DQ [VarSub a2]]} {[LIT_CHARS 0]} ) (= scope= flags=0 words=[] bindings=[('a20', {[DQ [VarSub r]]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub a20]]}})]]} {[LIT_DBRACKET_LIKE "=="]} {[DQ [LIT_CHARS catch__STAR__]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS _nth]} {[DQ [VarSub a2]]} {[LIT_CHARS 1]} ) (= scope= flags=0 words=[] bindings=[('a21', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS _nth]} {[DQ [VarSub a2]]} {[LIT_CHARS 2]} ) (= scope= flags=0 words=[] bindings=[('a22', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS _list]} {[DQ [VarSub a21]]} ) (= scope= flags=0 words=[] bindings=[('binds', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS ENV]} {[DQ [VarSub env]]} {[DQ [VarSub binds]]} {[DQ [VarSub __ERROR]]} ) (= scope= flags=0 words=[] bindings=[('try_env', {[DQ [VarSub r]]})]) (= scope= flags=0 words=[] bindings=[('__ERROR', {[SQ ]})]) (Com {[LIT_CHARS EVAL]} {[DQ [VarSub a22]]} {[DQ [VarSub try_env]]} ) ) ) (Com {[LIT_CHARS return]} ) ) (List (Com {[LIT_CHARS _count]} {[DQ [VarSub ast]]} ) (Com {[LIT_CHARS _slice]} {[DQ [VarSub ast]]} {[LIT_CHARS 1]} {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub r]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 2]}}}]} ) (Com {[LIT_CHARS EVAL_AST]} {[DQ [VarSub r]]} {[DQ [VarSub env]]} ) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('r', {[SQ ]})]) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (Com {[LIT_CHARS _last]} {[DQ [VarSub ast]]} ) (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub r]]})]) ) (List (Com {[LIT_CHARS EVAL]} {[DQ [VarSub a1]]} {[DQ [VarSub env]]} ) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) (If (DBracket {B? LOGICAL_BINARY_OR {B2 BINARY_STRING_EQUAL {[DQ [VarSub r]]} {[DQ [VarSub __false]]}} {B2 BINARY_STRING_EQUAL {[DQ [VarSub r]]} {[DQ [VarSub __nil]]}}}) (List (Com {[LIT_CHARS _nth]} {[DQ [VarSub ast]]} {[LIT_CHARS 3]} ) (= scope= flags=0 words=[] bindings=[('a3', {[DQ [VarSub r]]})]) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub a3]]}}) (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub a3]]})]) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('r', {[DQ [VarSub __nil]]})]) (Com {[LIT_CHARS return]} ) ) ) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub a2]]})]) ) ) (List (Com {[LIT_CHARS _function]} {[DQ [LIT_CHARS "ENV "][\ LIT_ESCAPED_CHAR "\\\""][VarSub env][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\\""][VarSub a1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{@}"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "; "][LIT_CHARS " EVAL "][\ LIT_ESCAPED_CHAR "\\\""][VarSub a2][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{r}"][\ LIT_ESCAPED_CHAR "\\\""]]} {[DQ [VarSub a2]]} {[DQ [VarSub env]]} {[DQ [VarSub a1]]} ) (Com {[LIT_CHARS return]} ) ) (List (Com {[LIT_CHARS EVAL_AST]} {[DQ [VarSub ast]]} {[DQ [VarSub env]]} ) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('r', {[SQ ]})]) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (= scope= flags=0 words=[] bindings=[('el', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS _first]} {[DQ [VarSub el]]} ) (= scope= flags=0 words=[] bindings=[('f', {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub r]]}})]]})]) (Com {[LIT_CHARS _rest]} {[DQ [VarSub el]]} ) (= scope= flags=0 words=[] bindings=[('args', {[DQ [VarSub ANON bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub r]]}})]]})]) (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[DQ [VarSub f transform_ops=[PatSub {[LIT_CHARS "@"]} {[LIT_CHARS " "]} do_all]]]} {[DQ [VarSub f]]}}) (List (Com {[LIT_CHARS set]} {[LIT_CHARS --]} {[VarSub f transform_ops=[PatSub {[LIT_CHARS "@"]} {[LIT_CHARS " "]} do_all]]} ) (= scope= flags=0 words=[] bindings=[('ast', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS ENV]} {[DQ [VarSub 3]]} {[DQ [VarSub 4]]} {[VarSub args]} ) (= scope= flags=0 words=[] bindings=[('env', {[DQ [VarSub r]]})]) ) (ElseTrue) (List (Com {[LIT_CHARS eval]} {[VarSub f transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "@*"]}]]} {[VarSub args]} ) (Com {[LIT_CHARS return]} ) ) ) ) ) ) ) ) ) (FunctionDef PRINT [] (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub __ERROR]]}}) (List (Com {[LIT_CHARS _pr_str]} {[DQ [VarSub __ERROR]]} {[LIT_CHARS yes]} ) (= scope= flags=0 words=[] bindings=[('r', {[DQ [LIT_CHARS "Error: "][VarSub r]]})]) (= scope= flags=0 words=[] bindings=[('__ERROR', {[SQ ]})]) ) (ElseTrue) (Com {[LIT_CHARS _pr_str]} {[DQ [VarSub 1]]} {[LIT_CHARS yes]} ) ) ) (Com {[LIT_CHARS ENV]} ) (= scope= flags=0 words=[] bindings=[('REPL_ENV', {[DQ [VarSub r]]})]) (FunctionDef REP [] (List (= scope= flags=0 words=[] bindings=[('r', {[SQ ]})]) (Com {[LIT_CHARS READ]} {[DQ [VarSub 1]]} ) (Com {[LIT_CHARS EVAL]} {[DQ [VarSub r]]} {[DQ [VarSub REPL_ENV]]} ) (Com {[LIT_CHARS PRINT]} {[DQ [VarSub r]]} ) ) ) (FunctionDef _fref [] (List (Com {[LIT_CHARS _symbol]} {[DQ [VarSub 1]]} ) (= scope= flags=0 words=[] bindings=[('sym', {[DQ [VarSub r]]})]) (Com {[LIT_CHARS _function]} {[DQ [VarSub 2][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{@}"][\ LIT_ESCAPED_CHAR "\\\""]]} ) (Com {[LIT_CHARS ENV_SET]} {[DQ [VarSub REPL_ENV]]} {[DQ [VarSub sym]]} {[DQ [VarSub r]]} ) ) ) (For n [{[DQ [VarSub core_ns bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}}) transform_ops=[(!ref)]]]}]) (Com {[LIT_CHARS _fref]} {[DQ [VarSub n]]} {[DQ [VarSub core_ns bracket_op=(Index {A Atom NODE_ARITH_WORD {[DQ [VarSub n]]}})]]} ) ) (FunctionDef _eval [] (Com {[LIT_CHARS EVAL]} {[DQ [VarSub 1]]} {[DQ [VarSub REPL_ENV]]} ) ) (Com {[LIT_CHARS _fref]} {[DQ [LIT_CHARS eval]]} {[LIT_CHARS _eval]} ) (Com {[LIT_CHARS _list]} ) (= scope= flags=0 words=[] bindings=[('argv', {[DQ [VarSub r]]})]) (For _arg [{[DQ [VarSub @ transform_ops=[Slice {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 2]}} None]]]}]) (List (Com {[LIT_CHARS _string]} {[DQ [VarSub _arg]]} ) (Com {[LIT_CHARS _conj] [LIT_OTHER "!"]} {[DQ [VarSub argv]]} {[DQ [VarSub r]]} ) ) ) (Com {[LIT_CHARS _symbol]} {[DQ [LIT_CHARS __STAR__ARGV__STAR__]]} ) (Com {[LIT_CHARS ENV_SET]} {[DQ [VarSub REPL_ENV]]} {[DQ [VarSub r]]} {[DQ [VarSub argv]]} ) (Com {[LIT_CHARS REP]} {[DQ [LIT_CHARS "(def! not (fn* (a) (if a false true)))"]]} ) (Com {[LIT_CHARS REP]} {[DQ [LIT_CHARS "(def! load-file (fn* (f) (eval (read-string (str "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "(do "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " (slurp f) "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ")"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ")))))"]]} ) (Com {[LIT_CHARS REP]} {[DQ [LIT_CHARS "(defmacro! cond (fn* (& xs) (if (> (count xs) 0) (list 'if (first xs) (if (> (count xs) 1) (nth xs 1) (throw "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "odd number of forms to cond"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ")) (cons 'cond (rest (rest xs)))))))"]]} ) (Com {[LIT_CHARS REP]} {[DQ [LIT_CHARS "(defmacro! or (fn* (& xs) (if (empty? xs) nil (if (= 1 (count xs)) (first xs) "][\ LIT_ESCAPED_CHAR "\\`"][LIT_CHARS "(let* (or_FIXME ~(first xs)) (if or_FIXME or_FIXME (or ~@(rest xs))))))))"]]} ) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub 1]]}}) (List (Com {[LIT_CHARS REP]} {[DQ [LIT_CHARS "(load-file "][\ LIT_ESCAPED_CHAR "\\\""][VarSub 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ")"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) ) (While (Com {[LIT_CHARS true]} ) (List (AndOr OP_OR_IF (Com {[LIT_CHARS READLINE]} {[DQ [LIT_CHARS "user> "]]} ) (Com {[LIT_CHARS exit]} {[DQ [VarSub ?]]} ) ) (AndOr OP_AND_IF (DBracket {B1 UNARY_STRING_n {[DQ [VarSub r]]}}) (AndOr OP_AND_IF (Com {[LIT_CHARS REP]} {[DQ [VarSub r]]} ) (Com {[LIT_CHARS echo]} {[DQ [VarSub r]]} ) ) ) ) ) )