声明 - >如果是bool然后是statement_list - >而bool statement_list - > id =表达式
所以如果输入:((id = id + id)(如果bool那么(如果bool那么(id = id + id))(id = const / const)(id = id + id))(而bool( id = id - const)(id = id - id)))
报表数量应为9。
答案 0 :(得分:4)
Scheme是homoiconic。无法区分表示Scheme代码的列表(例如语句)和表示数据的列表,因为Scheme代码是 Scheme数据。但是,当然可以计算列表中包含的列表数量,这可以通过以下函数完成。
(define (list-count list)
(cond ((null? list) 0)
((list? (car list))
(+ (list-count (car list))
(list-count (cdr list))
1))
(else (list-count (cdr list)))))
根据您的规范,当您在问题中给出列表时,这将返回9
。
> (list-count '((id = id + id)(if bool then (if bool then ( id = id + id ))(id = const / const)(id = id + id))(while bool (id = id - const)(id = id - id))))
9