Simplify return operation
Some checks failed
Build / build (push) Failing after 1m11s
Test / build (push) Failing after 11m42s

This commit is contained in:
Chuck Smith
2024-03-18 16:33:39 -04:00
parent b47a39e1b2
commit 98c8582fdb
7 changed files with 87 additions and 51 deletions

View File

@@ -14,7 +14,7 @@ var Builtins = []struct {
}{
{
"len",
&Builtin{Fn: func(args ...Object) Object {
&Builtin{Name: "len", Fn: func(args ...Object) Object {
if len(args) != 1 {
return newError("wrong number of arguments. got=%d, want=1",
len(args))
@@ -34,7 +34,7 @@ var Builtins = []struct {
},
{
"input",
&Builtin{Fn: func(args ...Object) Object {
&Builtin{Name: "input", Fn: func(args ...Object) Object {
if len(args) > 0 {
obj, ok := args[0].(*String)
if !ok {
@@ -57,7 +57,7 @@ var Builtins = []struct {
},
{
"print",
&Builtin{Fn: func(args ...Object) Object {
&Builtin{Name: "print", Fn: func(args ...Object) Object {
for _, arg := range args {
fmt.Println(arg.Inspect())
}
@@ -68,7 +68,7 @@ var Builtins = []struct {
},
{
"first",
&Builtin{Fn: func(args ...Object) Object {
&Builtin{Name: "first", Fn: func(args ...Object) Object {
if len(args) != 1 {
return newError("wrong number of arguments. got=%d, want=1", len(args))
}
@@ -87,7 +87,7 @@ var Builtins = []struct {
},
{
"last",
&Builtin{Fn: func(args ...Object) Object {
&Builtin{Name: "last", Fn: func(args ...Object) Object {
if len(args) != 1 {
return newError("wrong number of arguments. got=%d, want=1", len(args))
}
@@ -107,7 +107,7 @@ var Builtins = []struct {
},
{
"rest",
&Builtin{Fn: func(args ...Object) Object {
&Builtin{Name: "rest", Fn: func(args ...Object) Object {
if len(args) != 1 {
return newError("wrong number of arguments. got=%d, want=1",
len(args))
@@ -131,7 +131,7 @@ var Builtins = []struct {
},
{
"push",
&Builtin{Fn: func(args ...Object) Object {
&Builtin{Name: "push", Fn: func(args ...Object) Object {
if len(args) != 2 {
return newError("wrong number of arguments. got=%d, want=2",
len(args))
@@ -158,7 +158,7 @@ var Builtins = []struct {
},
{
"pop",
&Builtin{Fn: func(args ...Object) Object {
&Builtin{Name: "pop", Fn: func(args ...Object) Object {
if len(args) != 1 {
return newError("wrong number of arguments. got=%d, want=1",
len(args))
@@ -184,7 +184,7 @@ var Builtins = []struct {
},
{
"exit",
&Builtin{Fn: func(args ...Object) Object {
&Builtin{Name: "exit", Fn: func(args ...Object) Object {
if len(args) == 1 {
if args[0].Type() != INTEGER_OBJ {
return newError("argument to `exit` must be INTEGER, got %s",

View File

@@ -151,14 +151,15 @@ func (s *String) Clone() Object {
type BuiltinFunction func(args ...Object) Object
type Builtin struct {
Fn BuiltinFunction
Name string
Fn BuiltinFunction
}
func (b Builtin) Type() ObjectType {
return BUILTIN_OBJ
}
func (b Builtin) Inspect() string {
return "builtin function"
return fmt.Sprintf("<built-in function %s>", b.Name)
}
type Array struct {