def call(args)
if args.count == 2
glue = args[0]
values = args[1]
if !glue.respond_to?(:to_str)
return maybe_raise Errors::InvalidTypeError, 'function join() expects the first argument to be a string'
elsif values.respond_to?(:to_ary) && values.to_ary.all? { |v| v.respond_to?(:to_str) }
values.to_ary.join(glue)
else
return maybe_raise Errors::InvalidTypeError, 'function join() expects values to be an array of strings'
end
else
return maybe_raise Errors::InvalidArityError, 'function join() expects an array of strings'
end
end