Я понимаю, что абстракция - это нечто более конкретное и более абстрактное. Это может быть либо структура данных, либо процедура. Например:
- Абстракция данных: Прямоугольник представляет собой абстракцию квадрата. Он концентрируется на том, что квадрат имеет две пары противоположных сторон и он игнорирует тот факт, что смежные стороны квадрата равны.
- Процедурная абстракция: Функция более высокого порядка
map
представляет собой абстракцию процедуры, которая выполняет некоторый набор операций над списком значений для создания совершенно нового списка значений. Он концентрируется на том, что процедура проходит через каждый элемент списка, чтобы создать новый список и игнорирует фактические операции, выполняемые над каждым элементом списка.
Итак, мой вопрос таков: как абстракция отличается от обобщения? Я ищу ответы, в основном связанные с функциональным программированием. Однако, если есть параллели в объектно-ориентированном программировании, я также хотел бы узнать об этом.