Mercerenies / gdlisp

Lisp on the Godot platform
GNU General Public License v3.0
140 stars 1 forks source link

Reification Length #58

Closed Mercerenies closed 2 years ago

Mercerenies commented 2 years ago

3b9efee0bd08289c76e2a37a6c8046ad218df983 fixed reification line length when using regular quotes. Unfortunately, the standard library is still rife with lengthy quasiquotes. We need to expand this fix to work with quasiquotes as well.

deflazy is the primary culprit, as its entire body is just one massive quasiquote.

Possibly related to #57? It's possible this is the cause of that issue.

Mercerenies commented 2 years ago

7841500 closes this issue. Compare deflazy before

static func deflazy(name_135, value_136, modifiers_137):
    var fn_name_138 = gensym("_lazy")
    var this_file_139 = gensym("_this_file")
    var value_var_140 = gensym("_value")
    var meta_name_141 = "__gdlisp_Lazy_{}".format([gensym(null).contents], "{}")
    return cons(GDLisp.intern("progn"), cons(cons(GDLisp.intern("defn"), cons(fn_name_138, cons(null, cons(cons(GDLisp.intern("let"), cons(cons(cons(this_file_139, cons(cons(GDLisp.intern("this-file"), null), null)), null), cons(cons(GDLisp.intern("if"), cons(cons(cons(GDLisp.intern("access-slot"), cons(this_file_139, cons(GDLisp.intern("has-meta"), null))), cons(meta_name_141, null)), cons(cons(cons(GDLisp.intern("access-slot"), cons(this_file_139, cons(GDLisp.intern("get-meta"), null))), cons(meta_name_141, null)), cons(cons(GDLisp.intern("let"), cons(cons(cons(value_var_140, cons(value_136, null)), null), cons(cons(cons(GDLisp.intern("access-slot"), cons(this_file_139, cons(GDLisp.intern("set-meta"), null))), cons(meta_name_141, cons(value_var_140, null))), cons(value_var_140, null)))), null)))), null))), null)))), cons(cons(GDLisp.intern("define-symbol-macro"), cons(name_135, cons(cons(GDLisp.intern("list"), cons(cons(GDLisp.intern("list"), cons(cons(GDLisp.intern("quote"), cons(GDLisp.intern("access-slot"), null)), cons(cons(GDLisp.intern("list"), cons(cons(GDLisp.intern("quote"), cons(GDLisp.intern("contextual-load"), null)), cons(cons(GDLisp.intern("this-true-filename"), null), null))), cons(cons(GDLisp.intern("quote"), cons(fn_name_138, null)), null)))), null)), append(GDLisp.Cons.new(sys_u002Fqq_smart_list(modifiers_137), GDLisp.Cons.new(null, null)))))), null)))

to deflazy after

static func deflazy(name_147, value_148, modifiers_149):
    var fn_name_150 = gensym("_lazy")
    var this_file_151 = gensym("_this_file")
    var value_var_152 = gensym("_value")
    var meta_name_153 = "__gdlisp_Lazy_{}".format([gensym(null).contents], "{}")
    var _split_154 = cons(cons(GDLisp.intern("this-file"), null), null)
    var _split_156 = cons(GDLisp.intern("get-meta"), null)
    var _split_157 = cons(value_148, null)
    var _split_160 = cons(cons(cons(GDLisp.intern("access-slot"), cons(this_file_151, cons(GDLisp.intern("set-meta"), null))), cons(meta_name_153, cons(value_var_152, null))), cons(value_var_152, null))
    var _split_161 = cons(cons(cons(GDLisp.intern("access-slot"), cons(this_file_151, cons(GDLisp.intern("has-meta"), null))), cons(meta_name_153, null)), cons(cons(cons(GDLisp.intern("access-slot"), cons(this_file_151, _split_156)), cons(meta_name_153, null)), cons(cons(GDLisp.intern("let"), cons(cons(cons(value_var_152, _split_157), null), _split_160)), null)))
    var _split_162 = cons(cons(GDLisp.intern("let"), cons(cons(cons(this_file_151, _split_154), null), cons(cons(GDLisp.intern("if"), _split_161), null))), null)
    var _split_163 = cons(GDLisp.intern("access-slot"), null)
    var _split_166 = cons(cons(GDLisp.intern("list"), cons(cons(GDLisp.intern("quote"), cons(GDLisp.intern("contextual-load"), null)), cons(cons(GDLisp.intern("this-true-filename"), null), null))), cons(cons(GDLisp.intern("quote"), cons(fn_name_150, null)), null))
    var _split_167 = cons(cons(GDLisp.intern("list"), cons(cons(GDLisp.intern("list"), cons(cons(GDLisp.intern("quote"), _split_163), _split_166)), null)), append(GDLisp.Cons.new(sys_u002Fqq_smart_list(modifiers_149), GDLisp.Cons.new(null, null))))
    return cons(GDLisp.intern("progn"), cons(cons(GDLisp.intern("defn"), cons(fn_name_150, cons(null, _split_162))), cons(cons(GDLisp.intern("define-symbol-macro"), cons(name_147, _split_167)), null)))

Just look at the difference in the length of the horizontal scrollbar on those code blocks :)