src/basilisp/lang/compiler/generator.py
def _synthetic_do_to_py_ast(ctx: GeneratorContext, node: Do) -> GeneratedPyAST:
    """Return AST elements generated from reducing a synthetic Lisp :do node
    (e.g. a :do node which acts as a body for another node)."""
    assert node.op == NodeOp.DO
    assert node.is_body

    # TODO: investigate how to handle recur in node.ret

    return GeneratedPyAST.reduce(
        *map(partial(gen_py_ast, ctx), chain(node.statements, [node.ret]))
    )
def _synthetic_do_to_py_ast(ctx: GeneratorContext, node: Do) -> GeneratedPyAST:
    """Return AST elements generated from reducing a synthetic Lisp :do node
    (e.g. a :do node which acts as a body for another node)."""
    assert node.op == NodeOp.DO
    assert node.is_body

    # TODO: investigate how to handle recur in node.ret

    return GeneratedPyAST.reduce(
        *map(partial(gen_py_ast, ctx), chain(node.statements, [node.ret]))
    )
def _synthetic_do_to_py_ast ( ctx : GeneratorContext , node : Do ) -> GeneratedPyAST : assert node . op == NodeOp . DO assert node . is_body # TODO: investigate how to handle recur in node.ret return GeneratedPyAST . reduce ( * map ( partial ( gen_py_ast , ctx ) , chain ( node . statements , [ node . ret ] ) ) )
Return AST elements generated from reducing a synthetic Lisp :do node
    (e.g. a :do node which acts as a body for another node).
Return AST elements generated from reducing a synthetic Lisp : do node ( e . g . a : do node which acts as a body for another node ) .