Aquí podría ser tu PUBLICIDAD


terminología de la programación funcional: levantar vs funtor / elevación aplicativo

votos
0

Estoy escribiendo una biblioteca de programación funcional y estoy tratando de decidir qué nombre es el mejor para una serie de funciones.

Las funciones de todos toman una función y volver otra función. La función devuelta tiene un tipo de retorno diferente en comparación con la función de entrada, pero los parámetros no se cambian.

Las implementaciones son:

  • <parameters> -> T|undefined=> <parameters> -> Option<T> Apidoc
  • <parameters> -> R|undefined <may throw>=> <parameters -> Either<L,R> Apidoc
  • <parameters> -> Promise<T>=> <parameters> -> Future<T>(Planeando añadir)

No ha habido cierto debate sobre el nombramiento y es todavía en curso en el repositorio de mi biblioteca.

La pregunta es si el uso de la terminología 'levantar' es apropiado para las funciones que he descrito.

La razón por la cual no puede ser apropiado es que el levantamiento es la más utilizada para describir el levantamiento sobre un funtor, lo que significa levantar ambos tipos de parámetros y el tipo de resultado. Así que .. A -> B -> Ca F<A> -> F<B> -> F<C>. Lo cual no es lo que hacen estas funciones.

Sin embargo veo que Scala está utilizando la terminología 'lifting' exactamente de la forma en que fue:

Yo quería ver cómo se nombran en este scala-tierra .. y resulta que ... Dicen que es levantar si he entendido bien: ¿Qué es la elevación en la Scala?

Recuerde que una función parcial [A, B] es una función definida para algún subconjunto del dominio A (tal como se especifica por el método isDefinedAt). Se puede levantar una función parcial [A, B] en una función [A, Opción [B]]. Es decir, una función definida sobre el conjunto de A, pero cuyos valores son de tipo Opción [B]

Por otra parte para el levantamiento cuando se levanten todos los parámetros además del resultado, dicen:

Levantar la función A => B en el dominio del funtor. [..] levantar en un funtor

Es allí => https://www.scala-lang.org/api/current/scala/PartialFunction.html#lift:A=%3EOption[B]

Por lo que significaría el levantamiento es un concepto general, de los cuales el levantamiento funtor es sólo una subcategoría. Además, Haskell está hablando de 'tipos levantadas' y '' sin alzarse tipos, lo que sugiere que la terminología se utiliza de una manera más suelta.

Por otro lado éste dice elevación sólo es funtor de elevación: https://stackoverflow.com/a/43596202/516188

He estado ofreciendo el levantamiento 'funtor' en mi biblioteca, nombrando a las funciones liftA2 y liftAp - así que hacer una diferencia entre la 'elevación' y 'elevación aplicativo'. ¿Cree que es apropiado? Si no, ¿qué nombres le recomendaría?

Publicado el 02/09/2018 a las 05:32
fuente por usuario Emmanuel Touzery
En otros idiomas...        العربية       


Aquí podría ser tu PUBLICIDAD