【发布时间】:2016-04-04 20:03:11
【问题描述】:
我想排序并打印出一个类似这样的列表:
苹果:1 香蕉:2 ...等(每对都在一个新行上,但 stackoverflow 显示它是这样的)
我发现我基本上可以完成它,但我收到一个错误,它需要一对,而它却给出了一个空列表。我知道该错误是因为我到达了列表的末尾,并且我在这里需要一个基本案例,但我不确定需要什么。如果我检查列表是否为空,然后将列表作为我的基本情况返回,它不会输出任何内容。
得到以下错误:
汽车:预期违反合同:对?给定:()
感谢您查看我的问题。
(define lst '( ("Apple" 1) ("Orange" 4) ("Pear"3) ("Banana" 2)) )
(define name (lambda (m)
(car m)
))
(define priority (lambda (m)
(car (cdr m))
))
(define sortList
(lambda (lst)
(sort lst
(lambda (x y)
(<(priority x)(priority y))
)
)
)
)
(define printItem (lambda (m)
(display (name m))
(display " : ")
(display (priority m))
(display "\n")
)
)
(define printQueue
(lambda (lst)
(printItem (car(sortList lst)))
(printQueue (cdr (sortList lst)))
)
)
(printQueue lst)
【问题讨论】:
-
另外,我尝试了“map”并且有点成功,只是它最后返回了一堆“空洞”,这是我不想要的。
-
另外,尽量不要像在(比如说)Java 中那样格式化代码。 Scheme/racket 有自己的格式约定,实际上看起来还不错。