Цитата Алан Перлис Эпиграммы по программированию , который был опубликован в 1982 году.
Смысл этой цитаты хорошо воплощен в Lisp , где есть множество функций, которые работают и имеют дело конкретно с списками , и вы могли бы многого добиться только с помощью списков и ассортимент функций, которые работают со списками, что делает их намного более мощными, чем любая специализированная структура данных.
Lua , в качестве другого примера, использует таблицы для имитации классов . Зачем использовать таблицу для создания объектов, а не создавать классы уровня языка и объекты, как это делают объектно-ориентированные языки? Поскольку ваш объект теперь является таблицей, вы можете бесплатно использовать любое количество функций, определенных для таблиц вашего объекта! Более того, нам не нужно было загромождать язык синтаксисом, специфичным для класса, и нам пришлось переопределять функции из таблицы, которые мы хотим для нашего класса.
То, что сказал Перлис, определенно является видным способом мышления в Лиспе и в функциональном программировании в целом. Эти 100 функций в вашей единой структуре данных могут быть скомпонованы вместе множеством уникальных способов, поскольку все они работают с одной и той же структурой данных, но вы не можете реально смешать 10 функций и с 10 структурами данных, поскольку они были определены только работать над их конкретной структурой данных.
Более современный и простой вариант этого мышления в терминах абстракций . Если бы мы кодировали на Java, вы бы предпочли написать 100 функций в интерфейсе List или тот же набор из десяти функций, один раз для ArrayList, один раз для LinkedList, один раз для ....