2013-05-04 65 views
0
(filter even? (numb-2tx 100000)) 

;Aborting!: maximum recursion depth exceeded 
;;numb-2tx generates a list from 2 to x, even for very large values of x (tested with 2000000) 

当我尝试将过滤函数应用于非常长的列表(> 40,000左右)时,我遇到了最大递归深度错误。Mit-scheme,带内置过滤函数的递归错误

有没有类似的内置,不会遇到这个问题,或者我将不得不拿出一个我自己的尾递归等价物?

回答

1

启动MIT方案并选择--stack选项。就像这样:

$ mit-scheme --stack 10000 

这里是我的结果与外的现成的堆栈,并与堆栈的1000:

> (length (filter even? (iota 1000000))) 

;Aborting!: maximum recursion depth exceeded 

然后,使用--stack 10000后:

> (length (filter even? (iota 1000000))) 

;Value: 500000 

知道filter有明显的非尾递归行为,这有些令人不安。