Какие операции в программах Common Lisp следует считать достаточно примитивными, чтобы рассчитывать на один «шаг» в алгоритмическом анализе? Насколько широко современные лиспы различаются по своей реализации?
Конечно, арифметика с маленькими целыми числами будет считаться одним шагом, но как насчет больших чисел? А как насчет разницы между reverse
и nreverse
? В частности, nreverse
тета reverse
? Как насчет всех операций с массивами и последовательностями? Кроме того, как фигурируют макросы - как я должен думать о макросах при анализе сложности?