func (cl *Compiler) reset() {
	cl.cvec.Clear()
	cl.unit.Init()
}
Prepare compiler for re-use.
package compiler
import (
	"backends/lapc"
	"backends/lapc/asm"
	"backends/lapc/ir"
	"dt"
	"sexp"
)
type Compiler struct {
	cvec *dt.ConstPool
	unit *ir.Unit
	as   *asm.Assembler
	innerBreak     ir.Instr  
	innerContinue  ir.Instr  
	innerLambdaRet ir.Instr  
}
func New() *Compiler {
	cvec := &dt.ConstPool{}
	return &Compiler{
		cvec: cvec,
		unit: ir.NewUnit(),
		as:   asm.NewAssembler(cvec),
	}
}
func (cl *Compiler) CompileFunc(fn *sexp.Func) *lapc.Object {
	cl.reset()
	compileStmtList(cl, fn.Body)
	cl.push().Empty()  
	asmObject := cl.as.Assemble(fn.Params, cl.unit)
	return &lapc.Object{
		StackUsage: asmObject.StackUsage,
		Code:       asmObject.Code,
		ConstVec:   cl.cvec,
	}
}