A funkciók az első osztályú

A számítógépes programozási nyelv van funkciója az első osztályban. ha úgy véli, a funkció mind az első osztályú létesítményeket. Különösen, ez azt jelenti, hogy a nyelv olyan funkciókat támogat, mint érveket más funkciót, vissza őket eredményeként egyéb funkciókat sorolják: változók vagy tároló adatstruktúrák. [1] Néhány teoretikus programozási nyelvek szükségesnek tartják az anonim funkciókat. [2] A nyelvek funkcióit az első osztályú függvények nevei nincs különleges státusuk, ők kezelik, mint a normál érték, az a fajta, ami működőképes. [3] A kifejezés először használt Christopher Strachey [en] keretében „funkciók, mint például az első osztályú objektumok” a 1960-as évek. [4]

első osztályú funkciók szerves részét képezik a funkcionális programozás. amelyben a használata magasabb rendű funkciók bevett gyakorlat. Egy egyszerű példa, magasabb rendű függvény olyan függvény a térkép. amely úgy mint argumentumot egy funkciót, és egy listát, és egy listát ad vissza, alkalmazása után a függvény minden egyes eleme a listán. A programozási nyelv támogatott térkép. támogatnia kell a feladatok átadását, mint érveket.

Vannak nehézségek a végrehajtás a feladatok átadását, mint érveket és vissza őket eredmények, különösen a jelenlétében nem helyi változókat. bevezetett beágyazott és névtelen függvények. Történelmileg hívták funarg probléma. Az angol «függvényargumentumot». [5] A korai imperatív programozási nyelvek ezeket a problémákat kezelni hajlandó visszatérni a támogató funkciók eredményeképpen, vagy elutasításáról a beágyazott függvények, ezért nem helyi változók (pl C). Lisp. az egyik első funkcionális programozási nyelvek, használja a megközelítés dinamikus körét. ahol a nem-lokális változók visszaút közelében meghatározása ezen változók a pont, ahol a funkció nevezték, ahelyett, hogy a pont, ahol azt nyilvánították. Teljes mértékben támogatja a lexikai keretében egy első-rendű függvény-ben vezették be a rendszer és a feldolgozással jár utalás történik a funkciója, mint a áramkörök helyett tiszta [4]. ez viszont szükségessé teszi a használatát szemétgyűjtő.

Ez a rész bemutatja, hogy miként konkrét programozási idiómák funkcionális nyelvek végre elsőrendű funkciók (Haskell) viszonylagos kényszerítő nyelvek, ahol a funkciók - tárgyak a másodrendű (C).

Magasabb rendű funkciók: az átviteli függvény argumentumában

A nyelv, ahol a funkciók - olyan tárgyak elsőrendű funkciója átadhatók paraméterként más funkciói is, mint bármely más anyag. Például, a Haskell:

Nyelvek, ahol a funkciók nem tárgyai az elsőrendű, hogy észre magasabb rendű funkciók technikák használatával, mint felhatalmazás.

Anonymous és a beágyazott függvények

A nyelv, amely támogatja a névtelen függvények mint argumentum a függvény egy magasabb rendű függvény:

A nyelvek, amelyek nem támogatják a névtelen függvények, először meg kell társítani [en] nevű függvény:

Nem helyi változók és lezárások

Ha a programozási nyelv támogatja a névtelen vagy egymásba ágyazott függvények elég logikus azt feltételezni, hogy hivatkozni fognak változók a függvényen kívül a test:

Ha a funkciók kerülnek bemutatásra formájában tiszta, felmerül a kérdés, hogyan továbbítsák kívüli értékeket a függvény a test. Ebben az esetben meg kell építeni egy áramkört a kezét, és ebben a szakaszban beszélni egy első osztályú funkciókat nem szükséges.

Magasabb rendű funkciók: függvények eredményeként a visszatérés

Ha visszatér a függvény valóban visszatér a kör. A példában a C-ben az összes helyi változókat zárt áramkör megy ki a hatálya alól, amint a program fog származni a funkció, amely a lezárás. Arra kényszerítve áramkör további eredményezhet definiált működést.

Kapcsolódó cikkek