Здравствуйте, VladD2, Вы писали:
VD>Конечно почти все ФЯ подерживают полиморфизм списков в том смысле, что позволяет создавать процедуры которые обрабатывают списки с различными типами хранимых значений. Но вот сам список — это всегда "однонаправленный связанный, неизменяемый список". Мы не можем (если я конечно не ошибаюсь) создать единую процедуру которая обрабатывала бы и список и (скажем) массив (коие все же есть в болшинстве ФЯ).
Можем, почему нет? Списки разделяют самые разные интерфейсы с самыми разными типами.
Тебя, скорее всего, заинтересует
Data.Foldable
Обрати внимание на типы функций:
sum :: (Foldable t, Num a) => t a -> a
Т.е. любой "сворачиваемый" контейнер может быть обработан этой функцией для подсчёта суммы его элементов.
Погляди на дефолтные инстансы — там есть и список и массив.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>