functioneel programmeren terminologie: het opheffen vs functor / applicatieve opheffen

stemmen
0

Ik ben het schrijven van een functioneel programmeren bibliotheek en ik probeer om te beslissen welke naam het beste is voor een reeks van functies.

De functies allemaal een functie en een andere functie terug te keren. De geretourneerde functie heeft een ander retourneringstype vergelijking met de invoerfunctie, maar de parameters worden niet veranderd.

Implementaties zijn:

  • <parameters> -> T|undefined=> <parameters> -> Option<T> Apidoc
  • <parameters> -> R|undefined <may throw>=> <parameters -> Either<L,R> Apidoc
  • <parameters> -> Promise<T>=> <parameters> -> Future<T>(Van plan om toe te voegen)

Er is enige discussie over naamgeving geweest en het is nog aan de gang in de repository van mijn bibliotheek.

De vraag is of het gebruik van de 'lift' terminologie die geschikt is voor de functies die ik heb beschreven is.

De reden waarom het niet geschikt kan zijn is dat de opheffing wordt meestal gebruikt om te beschrijven het opheffen van meer dan een functor, wat betekent dat het heffen van zowel parameter types en het type resultaat. Dus .. A -> B -> Caan F<A> -> F<B> -> F<C>. Dat is niet wat deze functies uit te voeren.

Maar ik zie dat Scala is met behulp van de 'lifting' terminologie in precies zoals ik was:

Ik wilde kijken hoe ze deze naam in scala-land .. en het blijkt ... ze zeggen dat het opheffen van als ik het goed begrijp: Wat is lifting in Scala?

Herinner een partiële functie [A, B] een functie is gedefinieerd voor bepaalde deelverzameling van het domein A (zoals gespecificeerd door de isDefinedAt methode). U kunt de lift een partiële functie [A, B] in een functie [A, Option [B]]. Dat wil zeggen een functie gedefinieerd over de gehele A maar waarvan de waarden zijn van het type optie [B]

Aan de andere kant voor het opheffen als alle parameters behalve het resultaat worden opgeheven, zeggen zij:

Lift de functie A => B in het domein van de functor. [..] tillen op een functor

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

Dus dat zou betekenen opheffing is een algemeen begrip, waarvan functor tillen is slechts een sub-categorie. Ook wordt haskell over 'opgetild typen' en 'unlifted types', wat suggereert dat de terminologie die wordt gebruikt in een losse manier.

Aan de andere kant is dit een zegt lifting is slechts functor lifting: https://stackoverflow.com/a/43596202/516188

Ik heb het aanbieden van de 'functor' lifting in mijn bibliotheek, het benoemen van de functies liftA2 en liftAp - dus het maken van een verschil tussen 'lifting' en 'applicatieve lifting'. Denk je dat die geschikt is? Zo niet, wat naamgeving zou u adviseren?

De vraag is gesteld op 02/09/2018 om 05:32
bron van user
In andere talen...                            

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