Следует ли "Лифтинг" в функциональном программировании строгим правилам?
Я рассмотрел "подъемные" вопросы и ответы, примеры которых мне показались, что функция подъема подобна любой функции преобразования, которая изменяет форму (например, преобразование монады).
Я пропускаю какую-либо точку или функцию подъема ("концепция подъема"), есть какие-то правила?
Если нет, то это просто концепция в функциональных преобразованиях?
1 ответ
Подъем не меняет "форму", только "тип". Под этим я подразумеваю, что поднятие функции, например, в List<A>
приводит к List<B>
, Форма (List
) не изменяется, но конкретный тип может.
Вы правы в том, что это похоже на любое другое преобразование. На самом деле стандартная операция map
является механизмом "подъема" функции единственной переменной в Functor (тип данных, который отображается на карту). Итак, вы можете думать о map
как lift1
тогда у вас есть lift2
(для функций двух переменных) и т. д.