Value print(FunctionArguments arguments, SymbolTable symbol_table)
        {
            string sep = arguments.get_string_argument(null, "sep", " ", symbol_table);

            // string end = arguments.get_string_argument(null, "end", "\n", symbol_table);
            string end = arguments.get_string_argument(null, "end", Environment.NewLine, symbol_table);

            var list_arg = arguments.get_list_arguments(0, symbol_table);

            var sb = new StringBuilder();

            for (int i = 0; i < list_arg.Count; i++)
            {
                sb.Append(list_arg[i].ToString());

                if (i < list_arg.Count - 1)
                {
                    sb.Append(sep);
                }
            }

            sb.Append(end);

            Console.Write(sb.ToString());

            if (text_writer != null)
            {
                text_writer.Write(sb.ToString());
            }

            return(NoneValue.NONE);
        }