функциональная терминология программирования: подъем против функтора / аппликативен лифтинг

голоса
0

Я пишу функциональную библиотеку программирования и я пытаюсь решить , какое имя лучше всего подходит для ряда функций.

Функции все принимают функцию и возвращать другую функцию. Возвращается функция имеет другой тип возвращаемого по сравнению с входной функции, но параметры не изменяются.

Реализации:

  • <parameters> -> T|undefined=> <parameters> -> Option<T> Apidoc
  • <parameters> -> R|undefined <may throw>=> <parameters -> Either<L,R> Apidoc
  • <parameters> -> Promise<T>=> <parameters> -> Future<T>(Планирует добавить)

Там были некоторые дискуссии об именовании и это продолжается до сих пор в хранилище моей библиотеки.

Вопрос заключается в том, используя «подъемную» терминологию подходит для функций, которые я описал.

Причина , почему это не может быть целесообразно в том , что подъемное наиболее часто используется для описания подъема над функтор, то есть поднимая оба параметра типа и тип результата. Так .. A -> B -> Cв F<A> -> F<B> -> F<C>. Но это не то , что эти функции делают.

Однако я вижу, что Scala использует «подъемную» терминологию в точности так, как я был:

Я хотел посмотреть , как они называют это в-земли лестницу .. и получается ... они говорят , что это подъем , если я правильно понимаю: Что такое «лифтинг» в Scala?

Помните частично определённая функция [A, B] есть функция, определенная для некоторого подмножества области А (как определено методом isDefinedAt). Вы можете поднять а частично определённая функция [A, B] в функции [A, опция [B]]. То есть, функция, определенная по всей А, но значения которых имеют тип Option [B]

С другой стороны, для подъема, когда все параметры поднятых к тому же результату, что они говорят:

«Подъем» функция A => B в область функтора. [..] «подъем в функтор»

Именно там => https://www.scala-lang.org/api/current/scala/PartialFunction.html#lift:A=%3EOption[B]

Так что это будет означать лифтинг общего понятие, из которых функтор подъем лишь подкатегория. Кроме того, Haskell говорит о «поднимаемых типах» и «unlifted типов», предполагая, что терминология используется в более рыхлом способе.

С другой стороны , это один говорит , что подъемный только «функтор подъем»: https://stackoverflow.com/a/43596202/516188

Я предлагаю «функтор» подъем в моей библиотеке, называя функцию liftA2 и liftAp - так что делает разницу между «подъемом» и «аппликативным подъемом». Как вы думаете , что это уместно? Если нет, то именование бы вы порекомендовали?

Задан 02/09/2018 в 05:32
источник пользователем
На других языках...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more