2010-06-01 75 views
3

如何在Scheme中使用數組?數組/方案

特別是,我試圖使用memoization實現遞歸斐波那契過程。數組是否存在於Scheme中?

如果不是,我該如何實現記憶?

+0

對於這樣的問題,指定您正在使用的實現通常非常有用。 Memoization在Scheme中很常見,大多數實現都會附帶一些庫。 – 2010-06-01 18:05:27

+0

我有一個標籤的實現,但似乎sgm編輯出來(可能是正確的,因爲我想我是通過使用它創建標籤)。我正在使用Pretty Big Scheme(DrScheme)。 – Cam 2010-06-01 18:11:15

+0

其實,我只是從DrScheme的Choose Language菜單中選擇了PBS - 我不知道應該使用哪一個。普通PLT和r5rs很受歡迎? – Cam 2010-06-01 18:20:20

回答

5

Scheme中有數組,但它們被稱爲vectors。請注意,它們不像其他語言(如Perl和Javascript)或類似名稱的C++事物那樣調整大小;你必須做一個更大的,並複製已過時的內容。

如果您想了解更多關於記憶和動態編程的信息,請閱讀免費書籍Concrete Abstractions的第12章。

+2

'他們不調整大小;你必須製作一個更大的文件並複製已過時的文件的內容。「聽起來和其他語言的文件完全一樣。我應該知道有什麼細微差別(比如,在方案向量和C數組之間)?謝謝! – Cam 2010-06-01 17:56:45

+0

我想這個方案向量元素可以像任何其他變量或cons單元一樣包含任何對象,而不限於「數組_____」。 – 2010-06-01 18:27:15

1

這不是一個直接的答案,所以隨時downvote等:如果你使用PLT和你需要memoization,那麼你應該看看戴夫赫爾曼的memoize package。此外,您可以從詐騙庫獲取memoize功能。

+1

PLT是相當大的計劃嗎?對於「PLT計劃」是什麼,我有點困惑。 – Cam 2010-06-01 18:27:05

+2

是的,「漂亮大」是DrScheme語言級別的名稱,是您使用的PLT Scheme語言的所有部分。 (目前這個項目正在更名爲Racket,部分原因是爲了避免混淆。) – 2010-06-01 19:03:39