funksjonell programmering terminologi: løfting vs funktor / applicative løfte

stemmer
0

Jeg skriver en funksjonell programmering bibliotek og jeg prøver å bestemme hvilke navn som er best for en rekke funksjoner.

Funksjonene alle ta en funksjon og returnere en annen funksjon. Den returnerte funksjon har en annen returtype i forhold til inngangsfunksjonen, men parametrene blir ikke endret.

Implementeringer er:

  • <parameters> -> T|undefined=> <parameters> -> Option<T> Apidoc
  • <parameters> -> R|undefined <may throw>=> <parameters -> Either<L,R> Apidoc
  • <parameters> -> Promise<T>=> <parameters> -> Future<T>(Planlegger å legge til)

Det har vært en del diskusjon om å navngi og det er fortsatt pågår i depotet av biblioteket mitt.

Spørsmålet er om du bruker 'løft' terminologi er hensiktsmessig for de funksjonene jeg har beskrevet.

Grunnen til at det ikke kan være aktuelt er at løfte er oftest brukt for å beskrive løfte over en funktor, som betyr å løfte begge parametertyper og resultat type. Så .. A -> B -> Ctil F<A> -> F<B> -> F<C>. Som ikke er hva disse funksjonene gjør.

Men jeg ser at scala bruker 'løfte' terminologi på akkurat den måten jeg var:

Jeg ønsket å se hvordan de nevne dette i scala-land .. og det viser seg ... de sier det er å løfte hvis jeg forstår riktig: Hva er løft i Scala?

Husk at en PartialFunction [A, B] er en funksjon som er definert for en undergruppe av domenet A (som angitt ved den isDefinedAt-metoden). Du kan løfte en PartialFunction [A, B] inn i en funksjon [A, Option [B]]. Det vil si, en funksjon som er definert over det hele av A men hvis verdier er av type Alternativ [B]

På den annen side for løfte når alle parametere løftes foruten resultatet, sier de:

Løft av funksjonen A => B inn i domenet til funktor. [..] løfte inn en funktor

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

Så det ville bety løfte er et generelt begrep, som funktor løfte er bare en underkategori. Dessuten er Haskell snakker om 'løftet typer' og 'unlifted typer', noe som tyder på at terminologien brukes i en løsere måte.

På den annen side sier dette en løfte er bare funktor løft: https://stackoverflow.com/a/43596202/516188

Jeg har vært å tilby den 'funktor' løft i mitt bibliotek, navngi funksjoner liftA2 og liftAp - så gjør en forskjell mellom 'løft' og 'applicative løft'. Tror du det er riktig? Hvis ikke, hva navngiving vil du anbefale?

Publisert på 02/09/2018 klokken 05:32
kilden bruker
På andre språk...                            

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