Получить второй элемент списка списков в виде списка списков - PullRequest
0 голосов
/ 29 ноября 2018

Я изучаю Racket и хочу получить второй список списка списков, а не список списков списков.

У меня есть этот список списков:

(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, но, поскольку я учусь:

Есть ли лучший (или функциональный стиль программирования) способ сделать это?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Могу ли я порекомендовать либо «Маленький интриган» (забавный, короткий, заставляющий задуматься), либо «Как разрабатывать программы» (бесплатно на веб-сайте HtDP.org, длинный и подробный, из учебников)?Оба хорошо написаны экспертами.Фактически, один эксперт появляется в списке авторов обеих книг.

0 голосов
/ 29 ноября 2018

Это правильный путь, но его легче прочитать:

(second list-of-list)
=> '((1 2 3) (4 5 6))

Если вам интересно, есть также third и fourth и так далее вплоть до tenth.Это все в документах .

...