Меня интересует численный анализ и недавно начал любовный роман с Common LISP. Я обнаружил, что мои мыслительные процессы сильно зависят от лет более императивного стиля программирования, поэтому я стремлюсь разработать более ленивый подход. Я полагаю, общая тема для тех, кто находится на пути LISP.Есть ли способ isf и setf несколько элементов массива?
В любом случае, считывая CLTL2, указывается, что к векторам можно обращаться в постоянное время, тогда как доступ к списку выполняется в линейном времени (раздел 2.5.1). Затем можно установить (setf (apply #'aref *some-vector* idx) new-value)
, чтобы установить одно место для вектора. Мой вопрос из двух частей:
a. Есть ли способ получить несколько значений массива, указав индексы списка, без необходимости перебирать список? Например, что-то похожее на правильную версию (map 'array #'aref *some-array* idx-list)
.
b. Есть ли способ установить значения некоторых элементов массива в том же духе, что и выше? Было бы идеально, чтобы иметь возможность применять функцию (через адекватно определенный map
или до reduce
и т. Д.) В список значений, извлеченных из массивов, например, для выборки и интерполяции.
Я также благодарен за любые комментарии относительно операций с массивами в целом и численные вычисления в частности (указатели на учебник или книгу, список рассылки, общие ошибки, когда использовать списки или другие структуры данных и т. Д.).
Cheers.
Вопрос слишком широк. Stackoverflow посвящен проблемам программирования, а не общим советам. Ваш вопрос лучше описывает конкретную реальную проблему и поставляется с исходным кодом. –
Вы должны заглянуть в блог Пола Хуонга - он проводит численные анализы с помощью CL: http://www.pvk.ca/ –
@PaulNathan Будет, спасибо! – mangarju