Закончил курс про последовательности. Пришло время решить парочку практических задач на списки.

Например: написать функцию, которая принимает список чисел и возвращает новый, содержащий те элементы из начального, которые имеют ту же четность, что и первое число в списке.

sameParity(l(-1, 0, 1, -3, 10, -2)); // (-1, 1, -3)
sameParity(l(2, 4, 3, -8, -5));      // (2, 4, -8)

Как получить список из элементов, удовлетворяющих определенному условию мы уже разобрали: для этого есть функция filter. Нужно лишь передать ей помимо начального списка правильную функцию, которая возвращает true для чисел той же четности, что и первое число в исходном списке.

Для этого проверяем на нечетность первое число в списке, и, в зависимости от результата, привязываем к константе isSameParity соответствующий предикат isOdd или isEven. Также не забываем вначале проверить исходный список на пустоту. Из пустого списка извлечь первое число не получится.