Racket lang: элемент доступа в списке - PullRequest
0 голосов
/ 27 марта 2019

Дайте одну функцию для доступа к элементу a в списке L.

(define L '(1 2 (a 3 4 5)))

Следуя форме (определите id expr), которая связывает id с результатом выражения, я попробовал следующее:

(define L '(1 2 (a 3 4 5) (car(cdr L))))

cdr обращается к концу списка, то есть к 3 4 5, если я не ошибаюсь, и затем я применяю машину к хвосту, чтобы получить доступ к заголовку списка, то есть a.Тем не менее, он не работает в DrRacket IDE.

Ответы [ 2 ]

2 голосов
/ 27 марта 2019

Вы включили часть (car(cdr L)) в список L.

> (define L '(1 2 (a 3 4 5) (car(cdr L))))
> L
(list 1 2 (list 'a 3 4 5) (list 'car (list 'cdr 'L))) ;; oh no

Но это все равно не извлекает 'a, потому что вам нужен доступ к car внутреннего списка:

(define L '(1 2 (a 3 4 5)))
(car (car (cdr (cdr L))))
;; or (caaddr L)
2 голосов
/ 27 марта 2019

Я думаю, вы хотели это сделать:

(define L '(1 2 (a 3 4 5)))

(car (car (cdr (cdr L))))
=> 'a

Что также можно записать как:

(caaddr L)
=> 'a
...