Fogalmak és terminológia (funkcionális transzformáció)

Ez a rész bemutatja a tiszta funkcionális transzformációk alapfogalmát és terminológiáját. Az adatkonverzióval kapcsolatos funkcionális átalakításokat alkalmazó megközelítés olyan kódot generál, amely rendszerint gyorsabb a programozáshoz, kifejezőbb és könnyebben hibajavítható és karbantartható, mint a hagyományos imperatív programozással generált kód.

Ne feledje, hogy a jelen fejezetben szereplő témák nem igényelnek részletes magyarázatot a funkcionális programozásról. De meghatározzák azokat a funkcionális programozási szolgáltatásokat is, amelyek megkönnyítik az XML-formátum egyik formájából a másikra történő lefordítását.

A szakaszban egy tisztán funkcionális átalakítást egy olyan funkciók határozzák meg, amelyeket puszta funkcióknak neveznek. Ez lehetővé teszi, hogy egy strukturált adatkészletet alakítsunk át egyik formáról a másikra. A "tiszta" szó azt jelzi, hogy a funkciók lehetővé teszik a kompozíciót. amely megköveteli, hogy a következők legyenek.

Lezárva. vagyis szabadon kell megrendelni és rendezni, anélkül, hogy bevonnák a program fennmaradó részeit és kölcsönös függőségüket. A nettó transzformációknak nincs fogalma a környezetükről, és nem befolyásolják azt. Más szóval az átalakításban használt funkcióknak nincsenek mellékhatásai.

Mentés nélkül. vagyis ugyanaz a funkció vagy ugyanazon bemeneti adatokkal rendelkező bizonyos funkciók végrehajtása mindig ugyanazokat a kimeneti adatokat eredményezi. A nettó konverziók nem ismerik a korábbi felhasználásokat.

E leírás végéig a "tiszta funkció" kifejezést elsősorban a programozás megközelítésére használják, nem pedig a nyelv sajátos jellemzőire.

Megjegyezzük, hogy a tiszta funkciókat a C #-ben és a Visual Basic-ben végzett függvényként kell végrehajtani. (A Visual Basic-ben a rutinok nem adhatnak vissza értéket, ezért nem használják tisztán funkcionális átalakítások készítésére.)

Ezenkívül nem szabad összetévesztenie a tiszta funkciókat tisztán virtuális módszerekkel a C ++-ban. A második eset azt mutatja, hogy a zárt osztály absztrakt, és a metódus szövege nincs megadva.

Funkcionális programozás

A funkcionális programozás olyan programozási megközelítésre utal, amely közvetlenül támogatja a tisztán funkcionális átalakításokat.

Történelmileg az általános célú funkcionális programozási nyelvek, mint az ML, a Scheme, a Haskell és az F # (a Microsoft Research által kifejlesztett), a tudományos közösség fő érdeklődése volt. Annak ellenére, hogy mindig lehetett tisztán funkcionális átalakításokat írni a C # és a Visual Basic rendszerben, ez a vonzó lehetőség a legtöbb programozó számára összetettségük miatt. A C # 3.0-ban és a Visual Basic 9.0-ban azonban az új nyelvi konstrukciók, mint például a lambda kifejezések és típus definíciók, sokkal egyszerűbbé és produktívebbé tették a funkcionális programozást.

A funkcionális programozással kapcsolatos további információkért lásd: Funkcionális és kötelező programozás összehasonlítása.

Funkcionális programozási nyelvek

Annak ellenére, hogy a funkcionális programozás fő nyelvei nem széles körben használatosak, a speciális tárgyfunkcionális programozási nyelvek sikeresebbek. Például a többszöri stíluslap (CSS) segítségével sok weboldal megjelenését definiálják, és az XSLT-átalakításokat széles körben használják az XML adatfeldolgozásban. Az XSLT-ről további információkat az XSLT átalakítások című részben talál.

Az alábbi táblázatok meghatározzák a funkcionális transzformációkhoz kapcsolódó néhány feltételt.

magas rendű funkció (első osztály)

Olyan függvény, amely program objektumként értelmezhető. Például egy nagy megbízhatóságú funkció átvihető és visszaküldhető más funkciókból. A C # és a Visual Basic programban a kifejezések delegálása és a lambda kifejezések a nagy rendű függvényeket támogató nyelvi összetevők. Nagyrendű funkció megírásához egy vagy több érvet kell kijelölnie a küldöttek elfogadásához, a lambda kifejezésekkel általában. Számos szabványos lekérdezési operátor nagy megbízhatóságú funkció.

Valójában ez egy beépített névtelen funkció, amely akkor használható, ha a delegált típus ismeretlen. Ez a lambda kifejezések egyszerűsített jelentése, de elegendő ennek a bemutatónak a céljaira.

A strukturált adatkészlet általában a standard típus. A LINQ-val való kompatibilitás biztosítása érdekében a gyűjteménynek végre kell hajtania az IEnumerable interfészt vagy az IQueryable interfészt (vagy az egyik fő IEnumerator prototípusát vagy IQueryable ).

tuple (névtelen típusok)

Matematikai koncepcióként a tuple véges sorozata az objektumoknak, mindegyik egy bizonyos típusnak. A sort is rendezett listanak hívják. Az anonim típusok ennek a koncepciónak a nyelvhasználata, amely lehetővé teszi egy névtelen típusú osztály deklarálását, és ezzel egyidejűleg egy ilyen típusú példányt hoz létre.

típus definíció (rejtett gépelés)

A fordító képes egy változó típusának meghatározására kifejezett típusú nyilatkozat hiányában.

a késleltetett végrehajtás és a gyorsasági számítások

Végezze el a kifejezés kiértékelésének késleltetését, amíg eredményre nincs szükség. A gyűjteményekben támogatott a halasztott végrehajtás.

Ezeket a nyelvi jellemzőket kódmintákban használják ebben a szakaszban.

Kapcsolódó cikkek