List 在scheme中传递多维列表指针

List 在scheme中传递多维列表指针,list,multidimensional-array,scheme,declaration,using,List,Multidimensional Array,Scheme,Declaration,Using,我试图声明一个多维列表并通过引用使用它(在scheme下) 等等 正如你们这些睿智而有经验的阴谋家所看到的,这是行不通的。 我怀疑“大名单”显然需要在声明和访问方面进行一些特殊处理(非法功能!),我担心我已经浏览了一些网站,但找不到指导 任何善良的灵魂请帮忙?let和let*的语法是(let)。 绑定仅在主体中可用。你的例子变成: (let* ((big-list (list '(0 0 8 4 255 255) '(0 0 16 6 255 255))) (small-list

我试图声明一个多维列表并通过引用使用它(在scheme下)

等等

正如你们这些睿智而有经验的阴谋家所看到的,这是行不通的。 我怀疑“大名单”显然需要在声明和访问方面进行一些特殊处理(非法功能!),我担心我已经浏览了一些网站,但找不到指导


任何善良的灵魂请帮忙?

let和
let*
的语法是
(let)
。 绑定仅在主体中可用。你的例子变成:

(let* ((big-list (list '(0 0 8 4 255 255) '(0 0 16 6 255 255)))
       (small-list 0)
       (v1 0)
       (v2 0)
       (v3 0))
  (set! small-list (car big-list))
  (set! v1 (car small-list))
  (set! v2 (cadr small-list))

  (display "v1 ") (display v1) (newline)
  (display "v2 ") (display v2) (newline))
此处
(set!v1(汽车小列表))
被移动到let的主体中

另一种方法是使用
定义

(define big-list (list '(0 0 8 4 255 255) '(0 0 16 6 255 255)))
(define small-list 0)
(define v1 0)
(define v2 0)
(define v3 0)

(set! small-list (car big-list))
(set! v1 (car small-list))
(set! v2 (cadr small-list))

(display "v1 ") (display v1) (newline)
(display "v2 ") (display v2) (newline)

对于邮件标题中的多维度输入错误表示诚挚的歉意。谢谢soegaard。它就像一个符咒。我决定采用(define)方法。我还了解了(car)的一些非常有趣的行为。通过不将列表名称封装在parens中,您帮助我避免了非法的函数错误。函数将使用封装的方法-返回-指向car的列表指针进行“解引用”适合变量或用途的作业。今天学习非常好。
(define big-list (list '(0 0 8 4 255 255) '(0 0 16 6 255 255)))
(define small-list 0)
(define v1 0)
(define v2 0)
(define v3 0)

(set! small-list (car big-list))
(set! v1 (car small-list))
(set! v2 (cadr small-list))

(display "v1 ") (display v1) (newline)
(display "v2 ") (display v2) (newline)