【发布时间】:2019-04-13 18:39:54
【问题描述】:
我遇到了这个问题。这不是作业,实际上是我在测试中遇到的一个问题,为了加深我的理解,我想成功地解决它。
问题是: 制作一个过程元素计数,它采用对“lst”和元素“el”的列表并返回对列表,如果元素“el”作为第一个成员存在于“lst”中,则第二个成员得到增加 1。否则我们在“lst”的末尾添加一对(cons el 1)。 想要的输出: element-count '((a 2)) b) -> '((a 2 (b 1))
这是我的代码到目前为止的样子:
#lang sicp
(define (append list1 list2)
(if (null? list1)
list2
(cons (car list1) (append (cdr list1) list2))))
(define (count-element lst el)
(cond ((eq? (car lst) el) (+ (cdr lst) 1))
(else (append lst (cons (el 1))))))
我遇到的第一个问题是它告诉我“b”是未定义的。显然, b 不需要定义,因为我希望它在我的输出中。我应该如何解决这个问题?我工作的环境是 DrRacket。 主要问题是我应该如何定义对列表?或者我的代码实际上还可以吗?列表和配对对我来说仍然很困惑,所以对于愚蠢的问题,我深表歉意。
【问题讨论】:
标签: list append scheme racket sicp