terminologia programação funcional: levantando vs functor / levantamento aplicativa

votos
0

Eu estou escrevendo uma biblioteca de programação funcional e estou tentando decidir qual nome é o melhor para uma série de funções.

As funções de todos os ter uma função e retornar outra função. A função devolvido tem um tipo de retorno diferente em comparação com a função de entrada, mas os parâmetros não são alterados.

Implementações são:

  • <parameters> -> T|undefined=> <parameters> -> Option<T> Apidoc
  • <parameters> -> R|undefined <may throw>=> <parameters -> Either<L,R> Apidoc
  • <parameters> -> Promise<T>=> <parameters> -> Future<T>(Planejando adicionar)

Não tem havido alguma discussão sobre a nomeação e ele ainda está em curso no repositório da minha biblioteca.

A questão é se usando a terminologia 'elevador' é apropriado para as funções que eu descrevi.

A razão pela qual não pode ser apropriado é que o levantamento é mais frequentemente usado para descrever o levantamento ao longo de um functor, ou seja, levantar os dois tipos de parâmetros e tipo de resultado. Então .. A -> B -> Ca F<A> -> F<B> -> F<C>. O que não é o que essas funções fazem.

No entanto, vejo que scala está usando a terminologia 'lifting' exatamente da maneira que eu era:

Eu queria olhar como eles citar isso em scala-terra .. e não é que ... eles dizem que é levantar se eu entendi corretamente: O que é lifting em Scala?

Lembrar uma função parcial [A, B] é uma função definida para um subconjunto do domínio A (como especificado pelo método isDefinedAt). Você pode levantar uma função parcial [A, B] em uma função [A, Opção [B]]. Ou seja, uma função definida sobre o conjunto da A, mas cujos valores são do tipo Opção [B]

Por outro lado para o levantamento quando todos os parâmetros são levantadas além do resultado, eles dizem:

Levantar a função A => B para o domínio do functor. [..] levantamento em um functor

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

Assim que o levantamento significaria é um conceito geral, dos quais levantamento functor é apenas uma sub-categoria. Além disso, Haskell está falando sobre 'tipos levantadas' e 'tipos unlifted', sugerindo que a terminologia é usada de uma forma mais solta.

Por outro lado este diz levantamento é apenas lifting functor: https://stackoverflow.com/a/43596202/516188

Tenho vindo a oferecer o levantamento 'functor' na minha biblioteca, nomeando as funções liftA2 e liftAp - para fazer a diferença entre 'lifting' e 'lifting aplicativo'. Você acha que é apropriado? Se não, que de nomeação que você recomendaria?

Publicado 02/09/2018 em 05:32
fonte usuário
Em outras línguas...                            

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