["do", ["def", "pr-str", ["fn", ["exp", "print_readably"], ["if", ["list?", "exp"], ["str", ["`", "("], [".", ["map", ["fn", ["x"], ["pr-str", "x", "print_readably"]], "exp"], ["`", "join"], ["`", " "]], ["`", ")"]], ["if", ["=", ["`", "string"], ["type", "exp"]], ["if", "print_readably", ["str", ["`", "\""], [".", [".", [".", "exp", ["`", "replace"], ["RegExp", ["`", "\\\\"], ["`", "g"]], ["`", "\\\\"]], ["`", "replace"], ["RegExp", ["`", "\""], ["`", "g"]], ["`", "\\\""]], ["`", "replace"], ["RegExp", ["`", "\n"], ["`", "g"]], ["`", "\\n"]], ["`", "\""]], "exp"], ["if", ["=", ["`", "number"], ["type", "exp"]], "exp", ["if", ["=", null, "exp"], ["`", "nil"], ["if", ["=", true, "exp"], ["`", "true"], ["if", ["=", false, "exp"], ["`", "false"], ["if", ["symbol?", "exp"], ["get", "exp", ["`", "val"]], ["if", ["malfunc?", "exp"], ["str", ["`", "(fn* "], ["pr-str", ["get", "exp", ["`", "params"]]], ["`", " "], ["pr-str", ["get", "exp", ["`", "ast"]]], ["`", ")"]], ["str", ["`", "#"]]]]]]]]]]]], ["def", "pr-list", ["fn", ["lst", "print_readably", "sep"], [".", ["map", ["fn", ["s"], ["pr-str", "s", "print_readably"]], "lst"], ["`", "join"], "sep"]]], null ]