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!'來重新分配它。要麼,要麼繼續將修改後的列表作爲參數傳遞給需要它的函數。 –