我正在学习球拍,我想获得列表列表的第二个列表,而不是列表列表的列表。
我有以下列表列表:
(define list-of-list '(((a b c) (d e f)) ((1 2 3) (4 5 6))))
如果我这样做:
(car list-of-list)
我得到:
> '((a b c) (d e f))
但是,如果我这样做:
(cdr list-of-list)
我得到:
> '(((1 2 3) (4 5 6)))
我也尝试过:
(list-tail list-of-list 1)
但是我得到列表列表的列表:
>'(((1 2 3) (4 5 6)))
获得我想要的东西的唯一方法是做
(cadr list-of-list)
> '((1 2 3) (4 5 6))
我认为这是Racket正确的工作方式,但是,因为我正在学习:
是否有更好的(或函数式编程风格)方法?
答案 0 :(得分:1)
这是正确的方法,但这更易于阅读:
(second list-of-list)
=> '((1 2 3) (4 5 6))
如果您想知道,还有third
和fourth
,依此类推,直到tenth
。全部放在docs中。
答案 1 :(得分:0)
我可以推荐“小策划者”(有趣,简短,发人深省)还是“如何设计程序”(HtDP.org上的网络免费提供,详细又详尽,类似于教科书)?两者均由专家精心撰写。实际上,两本书的作者列表中都有一位专家。