В объявление процедуры можно включить ключевые слова, вводимые словом
options opseq
Иногда их называют расширяющими ключами. Предусмотрены следующие ключи:
Ключ remember
Ключ remember обеспечивает занесение результатов обращений к процедуре в таблицу памяти, которая используется при исполнении процедуры. Функция ор позволяет вывести таблицу:
> f:=proc(x) options remember; х^3 end:
> f(2):
8
> f(3):
27
> op(4,eval(f)): table([2 = 8, 3 = 27]) ,
Ключ remember особенно полезен при реализации итерационных процедур. К примеру, в приведенной ниже процедуре (без использования ключа remember) время вычисления n-го числа Фибоначчи растет пропорционально квадрату n:
> f:=proc(n) if n<2 then n else f(n-l)+f(n-2) fi end;
f:=proc(w)if n <2 then и else f(n - l) + ft>-2)endif endproc
> time(f(30)): 27.400
> f(30): 832040
Вычисление f(30) по этой процедуре на ПК с процессором Pentium II 350 МГц занимает около 30 с — см. контроль этого времени с помощью функции time (результат в секундах).
Стоит добавить в процедуру ключ remember, и время вычислений резко уменьшится:
> restart;
> fe:-proc(n) options remember: if n<2 then n else fe(n-l)+fe(n-2) fi end: