package internal import "reflect" type BuiltinFunc func(args []any) (any, bool) var builtins = map[string]BuiltinFunc{ "len": builtinLen, } func builtinLen(args []any) (any, bool) { if len(args) != 1 { return nil, false } if args[0] == nil { return 0, true } v := reflect.ValueOf(args[0]) switch v.Kind() { case reflect.Slice, reflect.Array, reflect.String, reflect.Map, reflect.Chan: return v.Len(), true default: return 0, false } } func LookupBuiltin(name string) (BuiltinFunc, bool) { fn, ok := builtins[name] return fn, ok }