作为参数传递的对象不是环境
The object ... passed as an argument is not an environment
我正在使用 MIT 方案解释器学习方案。我正在处理向量的不同表示,并想编写一个通用向量函数,它接受一个组件列表,然后 returns 一个函数,该函数根据参数将 return 标签数据或组件列表.
我的代码如下:
(define (vec li)
(lambda (x)
(cond ((= x 0) (cons 'vector
(cnt li)))
((= x 1) li)))
(define (cnt li cn)
(cond ((eq? li '()) cn)
(else (cnt (cdr li)
(+ cn 1)))))
内部函数 (cnt li cn)
计算列表中的项目数,return 计算达到 '()
时的计数。
然后函数 returned 允许访问带有 arg 0 的标签数据或带有 arg 1
的组件列表
当我尝试使用 (vec '(1 0 0))
应用该函数时,我得到 "the object (1 0 0), passed as an argument to vec, is not an environment" 我不明白作为环境的参数是什么意思,也不明白为什么我不能以这种方式传递列表
几个问题:
您缺少右括号(可能 c/p 错误)
你定义cnt
接受2个参数,
(define (cnt li cn)
(cond ((eq? li '()) cn)
(else (cnt (cdr li)
(+ cn 1)))))
但是当你在主函数中调用它时,你只用 1 个参数调用它。
(cnt li)
我正在使用 MIT 方案解释器学习方案。我正在处理向量的不同表示,并想编写一个通用向量函数,它接受一个组件列表,然后 returns 一个函数,该函数根据参数将 return 标签数据或组件列表.
我的代码如下:
(define (vec li)
(lambda (x)
(cond ((= x 0) (cons 'vector
(cnt li)))
((= x 1) li)))
(define (cnt li cn)
(cond ((eq? li '()) cn)
(else (cnt (cdr li)
(+ cn 1)))))
内部函数 (cnt li cn)
计算列表中的项目数,return 计算达到 '()
时的计数。
然后函数 returned 允许访问带有 arg 0 的标签数据或带有 arg 1
当我尝试使用 (vec '(1 0 0))
应用该函数时,我得到 "the object (1 0 0), passed as an argument to vec, is not an environment" 我不明白作为环境的参数是什么意思,也不明白为什么我不能以这种方式传递列表
几个问题:
您缺少右括号(可能 c/p 错误)
你定义cnt
接受2个参数,
(define (cnt li cn)
(cond ((eq? li '()) cn)
(else (cnt (cdr li)
(+ cn 1)))))
但是当你在主函数中调用它时,你只用 1 个参数调用它。
(cnt li)