【发布时间】:2017-04-17 18:04:15
【问题描述】:
我正在尝试递归解析包含数字、字符串和空列表的列表,并使用 string->number 将任何字符串转换为数字
(define tnode '(5 "5" () ()))
使用函数
(define (test funct inlist)
(cond((null? inlist) '())
((number? inlist) ((cons (car inlist) (test funct (cdr inlist)))))
(else (cons (funct (car inlist)) (test funct (cdr inlist))))
)
)
作为
(test string->number tnode)
但是,我在第一个数字 5 上收到了合同违规错误(如果我使用仅包含字符串和空列表的 tnode,则在后面的空列表上)。似乎该函数忽略了前两个条件并直接进入 else 语句。为什么是这样?我不相信有任何语法错误,因为我测试过的其他 cond 函数运行良好。我不太确定是什么问题。
【问题讨论】:
标签: scheme type-conversion racket