def compile_map_literal(form, ctx): ctx.push_const(code.intern_var(u"pixie.stdlib", u"hashmap")) rt.reduce(CompileMapRf(ctx), nil, form) size = rt.count(form).int_val() * 2 ctx.bytecode.append(code.INVOKE) ctx.bytecode.append(r_uint(size) + 1)
def compile_map_literal(form, ctx): ctx.push_const(code.intern_var(u"pixie.stdlib", u"hashmap")) rt.reduce(CompileMapRf(ctx), nil, form) size = rt.count(form) * 2 ctx.bytecode.append(code.INVOKE) ctx.bytecode.append(r_uint(size) + 1) if size > 0: ctx.sub_sp(size) compile_meta(rt.meta(form), ctx)
def expand_list(form): return rt.reduce(expand_list_rfn, EMPTY_VECTOR, form)
def flatten_map(form): return rt.reduce(flatten_map_rfn, EMPTY_VECTOR, form)
def compile_set_literal(form, ctx): vals = rt.reduce(ConsReduce(), nil, form) vector_call = rt.cons(rt.symbol(rt.wrap(u"vector")), vals) set_call = rt.cons(rt.symbol(rt.wrap(u"set")), rt.cons(vector_call, nil)) compile_cons(set_call, ctx)