Вот как вы создаете список списков:
(list (list 1 2) (list 3 4))
Или еще проще:
'((1 2) (3 4))
Теперь, если у вас уже есть другие подсписки, определенные как отдельные списки, поместите их во внешний список, снова вызвав для них list
:
(define the-first (list 1 2))
(define the-second (list 3 4))
(define list-of-lists (list the-first the-second))
list-of-lists
=> '((1 2) (3 4))
Чтобы получить доступ к позиции с двумя индексами, сделайте это — помните, что индексы отсчитываются от нуля:
(define lst '((1 2) (3 4)))
(list-ref (list-ref lst 1) 0)
=> 3
Итак, первый пример в вопросе будет выглядеть так:
(define a '((1 2) (3 4)))
(define b 1)
(define c (list-ref a b))
(define d 0)
(list-ref c d)
=> 3
И второй пример (после редактирования) будет выглядеть так:
(define citrus (list "oranges" "limes"))
(define apples (list "macintosh" "rome" "delicious"))
(define fruit (list citrus apples)) ; here's the list of lists
Теперь, чтобы получить доступ к элементу, сначала мы должны передать индекс самого внешнего списка (допустим, мы хотим, чтобы яблоки находились под индексом 1
в самом внешнем списке), а затем индекс самого внутреннего списка (допустим, нам нужен Macintosh, который находится под индексом 0
в подсписке яблок):
(list-ref (list-ref fruit 1) 0)
=> "macintosh"
person
Óscar López
schedule
04.07.2013