matematikë dhe shkenca kompjuterike, apply është një funksion që zbaton një funksion mbi argumente. Është thelbësor për gjuhët e programimit që rrjedhin nga llogaritja lambda, të tilla si LISP dhe Scheme, dhe gjithashtu për gjuhët funksionale . Ai ka një rol në studimin e semantikës denotative të programeve kompjuterike, sepse është një funksion i vazhdueshëm në rend të plotë të pjesshëm . Apply është gjithashtu një funksion i vazhdueshëm në teorinë e homotopisë, dhe, në të vërtetë, mbështet të gjithë teorinë: ai lejon që një shformim të homotopisë të shihet si një shteg i vazhdueshëm në hapësirën e funksioneve. Po kështu, mutacionet (rifaktorimet) e vlefshme të programeve kompjuterike mund të shihen si ato që janë "të vazhdueshme" në topologjinë Scott .

Përcaktimi më i përgjithshëm për apply është në teorinë e kategorisë, ku është e drejtë ngjitur me currying në kategoritë monoidale të mbyllura . Një rast i veçantë i kësaj janë kategoritë e mbyllura karteziane, gjuha e brendshme e të cilave është thjesht llogaritja lambda e tipuar .

Programimi

Redakto

Funksioni apply

Redakto

Apply është gjithashtu emri i një funksioni të veçantë në shumë gjuhë, i cili merr një funksion dhe një listë, dhe përdor listën si listën e argumenteve të vetë funksionit, sikur funksioni të thirrej me elementët e listës si argumente. Kjo është e rëndësishme në gjuhët me funksione variadike, sepse kjo është mënyra e vetme për të thirrur një funksion me një numër të papërcaktuar (në kohën e përpilimit) argumentesh.

Lisp dhe Skema e Përbashkët

Redakto

Në Common Lisp apply është një funksion që zbaton një funksion në një listë argumentesh (vini re këtu se "+" është një funksion variatik që merr çdo numër argumentesh):

(apply #'+ (list 1 2))

Në mënyrë të ngjashme në Scheme:

(apply + (list 1 2))

Shkoni

Redakto

Go, argumentet variadike të tiposura thjesht mblidhen në një pjesë. Thtirrësi mund të kalojë në mënyrë eksplicite një slice në vend të argumenteve variadike, duke shtuar një ... për të bërë slice argumentin. Kjo mund të bëhet vetëm për një parametër variatik. Thirrësi nuk mund të aplikojë një grup argumentesh për parametrat jo-variadikë, pa përdorur reflektim.Stampa:Sxhl

Haskell

Redakto

Haskell, funksionet mund të zbatohen me anë të një ballafaqimi të thjeshtë:

func param1 param2 ...

JavaScript

Redakto

JavaScript, objektet e funksionit kanë një metodë apply, argumenti i parë është vlera e fjalës kyçe të this funksioni brenda funksionit; e dyta është lista e argumenteve:

func.apply(null, args);

PHP, apply quhet call_user_func_array :

call_user_func_array('func_name', $args);

Python dhe Ruby

Redakto

Python dhe Ruby, i njëjti shënim me yll që përdoret në përcaktimin e funksioneve variadike përdoret për thirrjen e një funksioni në një varg dhe grup përkatësisht:

func(*args)

Python fillimisht kishte një funksion apply, por ky u zhvlerësua në favor të yllit në 2.3 dhe u hoq në 3.0. [1]

Vetia universale

Redakto

Konsideroni një funksion  , domethënë,   ku shënimi i kllapave   shënon hapësirën e funksioneve nga AB. Me anë të currying, ekziston një funksion unik   . Pastaj Apply ofron morfizmin universal

  ,

të tillë që

 

ose, në mënyrë të njëvlershme merret diagrami i lëvizjes

 

Më saktësisht, curry dhe app janë funktorë të përngjitur .

 
Vetia universale e objektit eksponencial
  1. ^ "Non-essential built-in functions". Python Library Reference. 8 shkurt 2005. Marrë më 19 maj 2013. {{cite web}}: Mungon ose është bosh parametri |language= (Ndihmë!)