gpt4 book ai didi

lisp - 将列表中的字符串转换为 Racket 中的数字?

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:56 26 4
gpt4 key购买 nike

调用所有 Racket 开发人员,我是 Racket 语言和函数语言的新手。长话短说,我有一个包含数字和字符串的嵌套列表,我想将字符串元素转换为数字。

示例:如果我有这样的列表'( 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: contract violation 预期:一对? 给定:3

关于我为什么会收到此错误或我做错了什么的任何线索,任何建议都会有所帮助。提前谢谢你

最佳答案

我建议这样做:

(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 () ()))

关于lisp - 将列表中的字符串转换为 Racket 中的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43382503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com