【发布时间】:2018-08-10 05:02:41
【问题描述】:
我有一个函数primeFactors,我想接受一个数字,并返回一个数字因子列表。看来
(define (primeFactors x '()) ...FOOBAR)
无效,但是
的解决方法(define (primeFactors x) (primeFactors2 x '()))
在其他地方定义primeFactors2 会起作用,因为我可以在调用函数但不定义它时将空列表作为参数传递。有没有一种不那么糟糕的方式来传递这种预先确定的参数?
【问题讨论】:
-
您是否想要一个带有可选参数的函数,如果在调用时将其省略,则该函数使用默认值?如果是这样...您没有提及您正在使用的 which 方案,但是许多流行的方案通过 DSSSL 样式参数列表或其他执行相同操作的语法来支持该方案。
-
在您的具体情况下,您也可以使用
(lambda (x . rest))。 -
“不那么糟糕”的方式是委托给本地定义的函数。这样可以避免使用纯内部状态的东西污染接口。
标签: scheme