我有以下代码:
(define-struct p (x z))
(define-struct s (p my-symbol))
(define N01 (make-s (make-p 22 'a) 'symbol))
(define N02 (make-s (make-p 25 'b) 'symbol))
(define N03 (make-s (make-p 23 'c) 'symbol))
(define my-list (list N01 N02 N03))
现在我想要一个看起来像这样的列表:(list 22 25 23)
或(list 'a 'b 'c)
我知道当我打电话给(p-x (s-p (first my-List)))
时,我得到了22,但我怎么能为my-List
中的整数或符号做到这一点?我认为它可以在递归过程中完成。
注意:我需要使用带有列表缩写的初学者级别
感谢您的帮助!
答案 0 :(得分:0)
我给你带来了好消息;这里有一本完整的教科书。这是How To Design Programs第二部分的主题,标题为“任意大数据”。有一个特定的设计方法适合于在列表上编写程序,例如您描述的列表。具体来说,通过9.1节阅读应该足以让你完成工作。
答案 1 :(得分:0)
首先制作一个功能并确定你需要它做什么。 你有个好的开始。首先使用设计配方来确定此功能的作用。它将获取结构列表并返回数字列表。 之后,我们可以推断出当我们到达空列表时我们将终止循环。使用您创建的内容,我们可以创建此功能。
(define (get-p list)
(cond [(empty? list) empty]
[else (cons (p-x (s-p (first list))) (get-p (rest list)))]))
我鼓励您使用相同的策略来创建一个从my-List返回Z列表的函数。