【发布时间】:2017-04-13 02:19:47
【问题描述】:
呼吁所有球拍开发人员,我是球拍语言和一般功能语言的新手。长话短说,我有一个包含数字和字符串的嵌套列表,我想将字符串元素转换为数字。
示例:如果我有这样的列表
'( 3 "3"( 1 "1"()( 2 "2" () ()))( 5 "5" () () ))
我想转换成
'( 3 3( 1 1()( 2 2 () ()))( 5 5 () () ))在保持相同形状的同时,我写了这个函数
(define (mapBst BST someFunct )
(if (null? BST) '()
(someFunct (car(cdr BST)) (mapBST someFunct (cdr (car BST))))
)
)
(mapBst '( 3 "3"( 1 "1"()( 2 "2" () ()))( 5 "5" () () )) string->number)
但是我收到了这个错误:cdr:合同违规 预期:对? 给定:3
任何线索我为什么会收到此错误或我做错了什么,任何建议都会有所帮助。提前谢谢你
【问题讨论】:
-
你定义了函数
mapBST并用mapBst调用。 -
@ymonad 感谢提醒我修正了错字但仍然无法正常工作检查我更新了上面的问题
-
该错误源自
(cdr (car BST))),其中(car BST)是3,调用(cdr 3)无效。