Я пишу функциональную библиотеку программирования и пытаюсь решить, какое имя лучше всего подходит для ряда функций.
Все функции принимают функцию и возвращают другую функцию. Возвращенная функция имеет другой тип возврата по сравнению с функцией ввода, но параметры не изменены.
Реализации:
<parameters> -> T|undefined
=> <parameters> -> Option<T>
apidoc
<parameters> -> R|undefined <may throw>
=> <parameters -> Either<L,R>
apidoc
<parameters> -> Promise<T>
=> <parameters> -> Future<T>
(планируется добавить)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1030* * * * * * * * * * * * * * * .
Вопрос в том, подходит ли использование терминологии 'lift' для функций, которые я описал.
Причина, по которой это может быть неуместно, заключается в том, что подъем чаще всего используется для описания подъема над функтором, что означает поднятие обоих типов параметров и типа результата. Итак .. A -> B -> C
до F<A> -> F<B> -> F<C>
. Это не то, что делают эти функции.
Однако я вижу, что scala использует терминологию «подъема» именно так, как я это делал:
Я хотел посмотреть, как они называют это на земле Скала ... и получается ... они говорят, что это поднимает, если я правильно понимаю:
Что такое "подъем" в Scala?
Помните, что PartialFunction [A, B] - это функция, определенная для некоторого подмножества домена A (как определено методом isDefinedAt). Вы можете «поднять» PartialFunction [A, B] в функцию [A, Option [B]]. То есть функция, определенная для всего A, но значения которой имеют тип Option [B]
С другой стороны, для поднятия, когда все параметры подняты, кроме результата, они говорят:
«поднять» функцию A => B в область функтора.
[..]
"подъем в функтор"
Это там =>
https://www.scala -lang.org / апи / ток / Скала / PartialFunction.html # лифт: A =% 3EOption [B]
Таким образом, это означает, что подъем - это общая концепция, из которой подъем функтора - это только подкатегория. Кроме того, haskell говорит о «поднятых типах» и «неснятых типах», предполагая, что терминология используется более свободно.
С другой стороны, этот говорит, что подъем - это только «подъем функтора»:
https://stackoverflow.com/a/43596202/516188
Я предлагал «функторное» поднятие в моей библиотеке, называя функции liftA2 и liftAp - таким образом, существует разница между «подъемом» и «аппликативным подъемом». Как вы думаете, это уместно? Если нет, какое наименование вы бы порекомендовали?
РЕДАКТИРОВАТЬ, так что в итоге мои предложенные названия будут lift
для A->B->X<C>
и liftA
(как аппликатив) для F<A>->F<B>->F<C>