package object import ( "fmt" "monkey/internal/code" ) type CompiledFunction struct { Instructions code.Instructions NumLocals int NumParameters int } func (cf *CompiledFunction) Bool() bool { return true } func (cf *CompiledFunction) Type() ObjectType { return COMPILED_FUNCTION_OBJ } func (cf *CompiledFunction) Inspect() string { return fmt.Sprintf("CompiledFunction[%p]", cf) } func (cf *CompiledFunction) String() string { return cf.Inspect() } type Closure struct { Fn *CompiledFunction Free []Object } func (c *Closure) Bool() bool { return true } func (c *Closure) Type() ObjectType { return CLOSURE_OBJ } func (c *Closure) Inspect() string { return fmt.Sprintf("Closure[%p]", c) } func (c *Closure) String() string { return c.Inspect() }