呼叫所有球拍开发人员,我是一般的语言和功能语言的新手。长话短说,我有一个包含数字和字符串的嵌套列表,我想将字符串元素转换为数字。
示例:如果我有这样的列表
'( 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
任何线索为什么我收到此错误或我做错了什么,任何建议都会有所帮助。提前谢谢
答案 0 :(得分:1)
我建议:
(define (mapBST BST someFunct)
(cond [(null? BST)
'()]
[(list? (car BST))
(cons (mapBST (car BST) someFunct)
(mapBST (cdr BST) someFunct))]
[else
(cons (someFunct (car BST))
(mapBST (cdr BST) someFunct))]))
示例:
> (mapBST '( 3 "3"( 1 "1"()( 2 "2" () ()))( 5 "5" () () ))
(λ (x) (if (string? x) (string->number x) x)))
'(3 3 (1 1 () (2 2 () ())) (5 5 () ()))