terminologie de programare funcțională: ridicare vs functor / ridicare aplicativa

voturi
0

Scriu o bibliotecă de programare funcțional și am încercat să decidă care nume este cel mai bun pentru o serie de funcții.

toate funcțiile iau o funcție și a reveni o altă funcție. Funcția returnat are un tip de retur diferit față de funcția de intrare, dar parametrii nu sunt modificate.

Implementari sunt:

  • <parameters> -> T|undefined=> <parameters> -> Option<T> Apidoc
  • <parameters> -> R|undefined <may throw>=> <parameters -> Either<L,R> Apidoc
  • <parameters> -> Promise<T>=> <parameters> -> Future<T>(Planificare pentru a adăuga)

Nu a existat unele discuții cu privire la numirea și este încă în curs de desfășurare în depozitul bibliotecii mele.

Întrebarea este dacă folosind terminologia „ridicare“ este adecvată pentru funcțiile le-am descris.

Motivul pentru care nu poate fi adecvat este ca de ridicare este cel mai des folosit pentru a descrie ridicarea peste un functor, ceea ce înseamnă de ridicare ambele tipuri de parametri și tipul de rezultat. Deci .. A -> B -> Ca F<A> -> F<B> -> F<C>. Ceea ce nu este ceea ce fac aceste funcții.

Cu toate acestea am vedea că utilizează timpanică terminologia „ridicare“ în exact modul în care am fost:

Am vrut să arate modul în care ei numesc acest lucru în teren ..-timpanică și se pare că ... ei spun că e de ridicare dacă am înțeles corect: Ce este „ridicare“ in Scala?

Nu uita un PartialFunction [A, B] este o funcție definită pentru un subset al domeniului A (așa cum este specificat prin metoda isDefinedAt). Puteți ridica un PartialFunction [A, B] într-o funcție [A, opțiunea [B]]. Aceasta este o funcție definită asupra întregului A, dar ale căror valori sunt de tip Option [B]

Pe de altă parte, pentru ridicarea atunci când toți parametrii sunt ridicate în afară de rezultatul, ei spun:

„Ridicare“ funcția A => B în domeniul functorului. [..] ridicarea într-un functor

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

Deci, asta ar însemna de ridicare este un concept general, a cărui ridicare functorului este doar o sub-categorie. De asemenea, Haskell vorbește despre „tipuri“ și „ridicat tipuri de unlifted“, sugerând că terminologia este folosită într-un mod mai liber.

Pe de altă parte , acesta spune de ridicare este doar „ de ridicare functorul“: https://stackoverflow.com/a/43596202/516188

Am fost oferind ridicarea „functorul“ în biblioteca mea, denumind funcțiile liftA2 și liftAp - astfel încât face o diferență între „ridicare“ și „ridicare aplicativ“. Credeți că este potrivit? Dacă nu, ce denumire ați recomanda?

Întrebat 02/09/2018 la 05:32
sursa de către utilizator
În alte limbi...                            

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