Co je prvotřídní funkce?
„First-Class Function“ je termín, který lze aplikovat v počítačovém programování a informatiku na počítačový programovací jazyk, pokud jeho ošetření funkcí dodržuje soubor pokynů, ačkoli plné rozsah a hloubka těchto pokynů není formálně dohodnuta. Chcete-li mít prvotřídní funkční počítačový programovací jazyk, hlavním rysem, který je třeba podpořit, je schopnost předávat funkce jako argumenty k jiným funkcím. Funkce musí být také schopna přiřadit proměnnou, takže může být uložena. Mezi další vlastnosti použité k určení, co představuje prvotřídní funkci, patří schopnost dynamicky generovat funkci za běhu a schopnost jazyka mít funkci jako návratovou hodnotu jiné funkce. Jazyky, které podporují architekturu prvotřídní funkce, umožňují vysokou úroveň abstrakce a v některých případech také poskytují mechanismus pro generování dynamického kódu za běhu.
Když se termín „funkce“ používá ve volně definovaném smyslu, koncept předávání funkce v rámci programu prostřednictvím proměnných nemusí být nutně jedinečný pro jazyky, které nativně implementují prvotřídní funkci. Schopnost předávat bloky kódu na funkce nebo vrátit ne-dynamický kód z funkce lze snadno provést v mnoha programovacích jazycích prostřednictvím různých mechanismů. Jednou z přísných částí definice prvotřídního funkčního jazyka je však to, že manipulace s funkcemi jako proměnných musí být prováděno nativně, aniž by bylo použito metadata, jako jsou podmíněné definice, a bez volání kompilátoru k přepracování kusu kódu. Termín „funkce“ se také používá k označení nezávislých kódových bloků, které jsou vyvolány samy o sobě, což znamená, že neobsahují kódové bloky známé jako metody v objektově orientovaných programovacích jazycích nebo bloky, které se někdy nazývají postupy v jiných jazycích.
Když je jazykNavrženo tak, aby umožňovalo prvotřídní funkční kód, lze některé vzory návrhu implementovat přímo než v jiných jazycích. Funkce může přijímat funkci jako proměnnou a poté vytvořit novou funkci a vrátit novou funkci do volacího kódu, takže to vytvoří mechanismus pro vytvoření času běhu programového kódu. To také může umožnit použití funkcí v reálném čase v reálném čase v jazyce bez použití procesů, jako je reflexe nebo vyhodnocení.
Některá z nejzákladnějších využití pro architekturu prvotřídních funkcí zahrnují vytváření obecných funkcí, které lze snadno znovu použít a implementovat rekurzivní matematické algoritmy, které jsou schopny s postupem modifikovat své rovnice. Jedním podobným, pokročilejším využitím pro prvotřídní mechanismy je implementace polymorfismu v jazycích, ve kterých není konkrétně implementován. To může umožnit volání funkcí se stejným podpisem funkce, ale provádět kód na základě kontextu v WhiCh, které se to nazývalo, někdy předáním funkce klíčové funkce polymorfní funkci.