Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List scheme-字符列表中的值之和_List_Char_Sum_Scheme - Fatal编程技术网

List scheme-字符列表中的值之和

List scheme-字符列表中的值之和,list,char,sum,scheme,List,Char,Sum,Scheme,我是Scheme的新手,我正试图弄明白为什么下面的函数不起作用。。我想对字符列表的int值求和(因此字符“1”的值为1,依此类推)。这就是我试图做的: (define (func ls sum) (cond ((null? ls)(sum)) (else(func (cdr ls)(+ sum string->number(string(car ls))))))) 但当我试着这样运行它时: (func '() 0) 我得到:“申请:不是程序; 应为可应用于参数的过程 给定值:0

我是Scheme的新手,我正试图弄明白为什么下面的函数不起作用。。我想对字符列表的int值求和(因此字符“1”的值为1,依此类推)。这就是我试图做的:

(define (func ls sum)
(cond
  ((null? ls)(sum))
  (else(func (cdr ls)(+ sum string->number(string(car ls)))))))
但当我试着这样运行它时:

(func '() 0)
我得到:“申请:不是程序; 应为可应用于参数的过程 给定值:0 参数…:[none]”错误。 或: “违反合同 预期:数字? 给定:#编号> 论点立场:第二 其他论据: 当我尝试其他输入时


谁能告诉我我做错了什么

由于括号,函数中有两个错误。第一个是使用
(sum)
:这被解释为调用无参数函数
sum
。第二个是不带括号的
string->number

(+ sum string->number(string(car ls)))
这被解释为使用三个参数调用函数
+
sum
string->number
(它是一个函数而不是一个数字),和
(string(car ls))
(它是一个字符串而不是一个数字)

以下是正确的函数:

(define (func ls sum)
  (cond
    ((null? ls) sum)
    (else (func (cdr ls) (+ sum (string->number (string (car ls))))))))
您应该始终记住,Scheme中的函数调用是以以下形式编写的:


string->number(string(car ls))
你有吗?这可能是重复的。我有,但我没有发现有相同的错误帮助我理解它。。
(function arg1 arg2 ... argn)