我是Scheme的新手,我花了大约一个星期的时间。
编写一个Lisp函数sumlist,它获取一个列表并返回顶级列表中所有数字的总和。从而, (sumlist'(1 2(3)(4 a)nil b 5))应返回1 + 2 + 5 = 8 。数字3和4不在顶层。使用号码?检查一个东西是否是一个数字。"
这是我到目前为止所拥有的。它可以识别某些内容是否为数字,但我无法将其添加到最高级别的数字。
$('select').on('change', function() {
if($('option:selected').text() == 'without') {
$('input').prop('disabled', false);
}
else {
$('input').prop('disabled', true);
}
});
感谢任何帮助。
编辑:绝地和丹尼尔的答案都有效。非常感谢你们。答案 0 :(得分:3)
我认为它可以更简单一些:
(define (sumlist lst)
(cond
((null? lst) 0)
((number? (car lst)) (+ (car lst) (sumlist (cdr lst))))
(else (sumlist (cdr lst)))))
由于您只关心元素是否为数字,因此只有3种情况。
答案 1 :(得分:2)
(define (sumlist lst)
(cond ((null? lst) 0) ;; list is empty, we're done ;;
((number? (car lst)) (+ (car lst) (sumlist (cdr lst)))) ;; the first item is a number, so we add it to the rest
(else (sumlist (cdr lst))) ;; the first item was not a number, we just check the rest of the list
))