LINUX.ORG.RU

История изменений

Исправление 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);
Упс! Код выполнился 40 раз быстрее чем Lisp.
<?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";
На PHP код выполнился вообще всего лишь в 10 раз медленнее чем в С.

и потому (списки) должны быть мутабельными, иначе - зачем оно?

Как раз в функциональщине их любят, вот был у тебя список, как добавить новый элемент без изменения? Создаешь новый, с концом указывающим на старый.

Исходная версия 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);
Упс! Код выполнился 40 раз быстрее чем Lisp.

и потому (списки) должны быть мутабельными, иначе - зачем оно?

Как раз в функциональщине их любят, вот был у тебя список, как добавить новый элемент без изменения? Создаешь новый, с концом указывающим на старый.