История изменений
Исправление MOPKOBKA, (текущая версия) :
массивы в жаваскрипте - это те же списки, но указатели засунуты в массив
Для меня слишком сложна мысль о том что списки это массивы, а массивы это списки. Не укладывается в голове, так что не понял о чем ты. Указатели и там и там, это да.
плюсы лисповых списков. вставка/удаление в текущее место - O(1) (у массива - O(n)).
Однако для такой вставки надо переделать половину стандартных функций, уже выше обсуждали. Давай лучше проверим, как JS выполняет вставку в начало массива, и сравним с кодом на лиспе.
const n = 99999;
const l = [];
for (let i = 0; i <= n; i++)
l.unshift(i); // Вставка в начало
let sum = 0;
for (let i = 0; i <= n; i++)
sum += l[i];
console.log(sum);
<?php
$n = 99999;
$l = [];
for ($i = 0; $i <= $n; $i++)
// По индексу 0 значение 99999, по индексу 99999 значение 0
$l[$n - $i] = $i;
$sum = 0;
for ($i = 0; $i <= $n; $i++)
$sum += $l[$i];
echo $sum, "\n";
и потому (списки) должны быть мутабельными, иначе - зачем оно?
Как раз в функциональщине их любят, вот был у тебя список, как добавить новый элемент без изменения? Создаешь новый, с концом указывающим на старый.
Исходная версия MOPKOBKA, :
массивы в жаваскрипте - это те же списки, но указатели засунуты в массив
Для меня слишком сложна мысль о том что списки это массивы, а массивы это списки. Не укладывается в голове, так что не понял о чем ты. Указатели и там и там, это да.
плюсы лисповых списков. вставка/удаление в текущее место - O(1) (у массива - O(n)).
Однако для такой вставки надо переделать половину стандартных функций, уже выше обсуждали. Давай лучше проверим, как JS выполняет вставку в начало массива, и сравним с кодом на лиспе.
const n = 99999;
const l = [];
for (let i = 0; i <= n; i++)
l.unshift(i); // Вставка в начало
let sum = 0;
for (let i = 0; i <= n; i++)
sum += l[i];
console.log(sum);
и потому (списки) должны быть мутабельными, иначе - зачем оно?
Как раз в функциональщине их любят, вот был у тебя список, как добавить новый элемент без изменения? Создаешь новый, с концом указывающим на старый.