Как я могу использовать массивы в Scheme?
В частности, я пытаюсь реализовать рекурсивную процедуру Фибоначчи с помощью мемоизации. Существуют ли массивы в Scheme?
Если нет, то как я могу реализовать мемоизацию?
Как я могу использовать массивы в Scheme?
В частности, я пытаюсь реализовать рекурсивную процедуру Фибоначчи с помощью мемоизации. Существуют ли массивы в Scheme?
Если нет, то как я могу реализовать мемоизацию?
В схеме есть массивы, но они называются векторы. Имейте в виду, что они не изменяют размер, как в других языках, таких как Perl и Javascript, или в C++ с таким же названием; вам нужно сделать больший и скопировать содержимое устаревшего.
Если вы хотите узнать больше о мемоизации и динамическом программировании в частности, вы можете прочитать главу 12 бесплатной книги Конкретные абстракции.
they don't resize; you have to make a bigger one and copy the contents of the obsolete one over.
Звучит точно так же, как массив из любого другого языка. Есть ли какие-то тонкие различия, о которых я должен знать (скажем, между векторами схемы и массивами c)? Спасибо!
- person Cam; 01.06.2010
Это не прямой ответ, поэтому не стесняйтесь голосовать против и т. д.: если вы используете PLT и вам нужна мемоизация, вам следует взглянуть на пакет memoize. Кроме того, вы можете получить функцию memoize из библиотеки мошенничества.
plt-scheme
в качестве тега. - person Eli Barzilay   schedule 01.06.2010