38 lines
535 B
Go
38 lines
535 B
Go
package object
|
|
|
|
import "fmt"
|
|
|
|
type Builtin struct {
|
|
Name string
|
|
Fn BuiltinFunction
|
|
}
|
|
|
|
func (b Builtin) Bool() bool {
|
|
return true
|
|
}
|
|
|
|
func (b Builtin) Type() Type {
|
|
return BuiltinType
|
|
}
|
|
|
|
func (b Builtin) Inspect() string {
|
|
return fmt.Sprintf("<built-in function %s>", b.Name)
|
|
}
|
|
|
|
func (b Builtin) Compare(other Object) int {
|
|
if obj, ok := other.(Builtin); ok {
|
|
if b.Name > obj.Name {
|
|
return 1
|
|
}
|
|
if b.Name == obj.Name {
|
|
return 0
|
|
}
|
|
return -1
|
|
}
|
|
return -1
|
|
}
|
|
|
|
func (b Builtin) String() string {
|
|
return b.Inspect()
|
|
}
|