Részleges alkalmazás

Részleges alkalmazás  - számos programozási nyelvben a többhelyes függvény argumentumainak egy részének rögzítése és egy másik, kisebb aritású funkció létrehozása . Például egy hármas függvény birtokában javíthatja ("összekötheti") az első argumentumot , és létrehozhat egy bináris függvényt úgy, hogy bármely .

A programozási gyakorlatban a részleges alkalmazást azért használják, mert gyakran hasznosak bizonyos számú argumentum rögzítésével kapott függvények. Például sok programozási nyelvnek van függvénye vagy növekményes operátora (ami az egyik rögzítése a dupla összeadás egyik argumentumaként) vagy értékmegfordító függvény. A részleges alkalmazás szinte minden olyan programozási nyelvben megvalósítható, amely képes többhelyes funkciók meghatározására. Számos nyelv rendelkezik speciális konstrukcióval a részleges alkalmazáshoz, például a C++ szabványos könyvtárnak van egy függvénye bind, amely bemenetként egy függvénynevet és argumentumokat vesz fel, és egy függvényobjektumot ad vissza  - az átadott argumentumkészlet részleges alkalmazásának eredményeként. a funkcióhoz.

Számos funkcionális programozási nyelvben , mint például az ML és a Haskell , a függvények alapértelmezés szerint curried formában vannak deklarálva , vagyis a többhelyes függvények koncepciója magasabb rendű unáris függvényekkel valósul meg ; ilyen feltételek mellett a részleges alkalmazás (ezeken a nyelveken operátorok szakaszának nevezik ) az argumentumok hiányos számú átadása [1] .

Az első osztályú funkciókkal rendelkező programozási nyelvekben definiálhatja a curry, uncurryés papply, a currying és a részleges alkalmazás közvetlen megvalósítását (a köztük lévő kapcsolattal: curry papply = curry). Ez a megközelítés azonban hosszabb programvégrehajtási időt eredményezhet a további lezárások létrehozása miatt , míg a Haskell hatékonyabb trükkök használatát teszi lehetővé [2] .

Jegyzetek

  1. Denis Moskvin. A szakaszok kompozíciója, mint értelmetlen stíluseszköz  // Funkcionális programozási gyakorlat. - 2010. - 4. sz . - S. 89-104 .
  2. Marlow - Peyton-Jones, 2004 .

Irodalom