获取第二个元素的list-ref错误

时间:2016-06-19 01:44:01

标签: scheme racket

为什么list-ref可以获得第一个元素,而不是第二个元素?

> (list-ref (cons 1 2) 0)
1
> (list-ref (cons 1 2) 1)
list-ref: index reaches a non-pair
  index: 1
  in: '(1 . 2)
  context...:
   C:\Program Files\Racket\collects\racket\private\misc.rkt:87:7
>

我正在使用DrRacket。

1 个答案:

答案 0 :(得分:3)

因为列表没有正确构建。试试这个:

(list-ref (list 1 2 3) 1)

请记住,列表是使用cons单元格构建的,该单元格在car部分中有一个元素,在cons部分中有另一个cdr单元格,或者是空列表:

(list-ref (cons 1 (cons 2 (cons 3 empty))) 1)