1
我有一个关于在不使用set的情况下在内存中保留列表的问题!不使用设置更新列表! - Scheme
我有限定的初始空列表,
(define database (list))
然后我有这个过程,它检查该密码是正确的,并增加了所述一对到列表中。
(define (set-pass l)
(if (pair? l)
(if (check-pass (second (last l)))
(add-to-list l)
"password does not meet policy requirements"
)
"invalid input"
)
)
和一个附加到列表的过程:
(define (add-to-list l)
;(append database l)
;implement this.
)
问题是,我必须多次调用这个过程:
(set-pass '('john '(X p c F z C b Y h 1 2 3 4 : :)))
(set-pass '('john '(X p c F z C b Y : 1 2 3 4 : :)))
(set-pass '('john '(X p c F z C b : : 1 2 3 4 : :)))
我实现的过程添加-TO-列表就像我打电话set-pass一次(如上所示附加),但如果我多次调用它,我找不到实现的方法。我试过几个东西here,here和here。但我无法达到我想要的。那我该怎么做?
即使我们将列表封装在过程中,在某些时候我们不得不使用'set!'来重新分配它。要么,要么继续将修改后的列表作为参数传递给需要它的函数。 –