Functional programming 替代计划中的休息?
有没有一种方法可以在不使用rest的情况下完成这项工作(我尝试将cdr lst放在rest所在的位置,但它给了我一个错误),以及如何删除if条件-(if(>n0)-因为我只想显示输出列表-(list nE)Functional programming 替代计划中的休息?,functional-programming,scheme,mit-scheme,Functional Programming,Scheme,Mit Scheme,有没有一种方法可以在不使用rest的情况下完成这项工作(我尝试将cdr lst放在rest所在的位置,但它给了我一个错误),以及如何删除if条件-(if(>n0)-因为我只想显示输出列表-(list nE) 请注意,所有过程仅绑定到全局范围内的变量。 例如: (let ((rest 5)) (rest '(1 2 3))) 在R6RS和更高版本中,您应该得到一个异常,说明数字5不是一个过程。原因是您已经覆盖了此范围中的绑定rest,应该使用变量rest作为5的绑定,而不是尝试将其作为过程调
请注意,所有过程仅绑定到全局范围内的变量。 例如:
(let ((rest 5))
(rest '(1 2 3)))
在R6RS和更高版本中,您应该得到一个异常,说明数字5
不是一个过程。原因是您已经覆盖了此范围中的绑定rest
,应该使用变量rest
作为5
的绑定,而不是尝试将其作为过程调用。在R5RS和更早版本中,结果是未定义的ned,因为它不是有效的方案代码,但大多数实现可能会出现与R6RS要求的错误类似的错误
您对
display
也做了同样的操作,但这次display
是一个执行全局display
以外的操作的过程。R6RS中可以,但R5RS和更早版本中不可以。对于所有受支持的类型,一个实现可以用全局替换它。display
支持all类型,因此您的代码可能无法在所有实现中工作,因为它是无效的R5R。注意:由于display
是一个内置函数(打印值),因此将该名称用于其他用途似乎有些奇怪。
(let ((rest 5))
(rest '(1 2 3)))