Fix pont kombinátor
A fix pont a funkciót hívjuk értéke olyan, hogy. Például az értékek fix pontot, és egyaránt funkcionál. Mivel a fix pont az elsőrendű függvények (azaz funkciók a „közönséges” értékek, mint egészek) elsőrendű érték a magasabb rendű funkcióit a fix pontok az egyéb funkciók, vagyis ha - fix pont (maga is függvénye) funkciót. Ezt figyelembe véve, egy fix pont kombinátor úgynevezett különlegessége:
Fix pont combinators teszi, hogy meghatározza egy névtelen rekurzív függvények. Egy kicsit meglepő, hogy az ilyen schemers magukat alkalmazásával lehet meghatározni, nem rekurzív λ-absztrakciók.
Az egyik legismertebb (és talán a legkönnyebb) fixpontos kombinátor a típustalan λ-kalkulus az úgynevezett Y kombinátor. Ez által kifejlesztett Haskell Curry, és meghatározása a következő:
Meg kell jegyezni, hogy az Y kombinátor használata a számítógépes stratégiai „call megnevezés”, hiszen a kifejezés (YG) hurkok tetszőleges g stratégia „hívás érték”.
Schemer fixpont szigorú és nem szigorú nyelven [szerkesztés]
Egyes matematikai formalizmus leírja számítástechnikai folyamatok (pl, λ-kalkulus vagy kombinatorikus logika), minden egyes kifejezés lehet tekinteni, mint a magasabb rendű funkciókat. Ezek formalizmusok megléte kombinátor fix pont azt jelenti, hogy minden funkció legalább egy fix pont. De ugyanakkor a funkció számos különböző fix pont.
Néhány más rendszerek, mint például egyszerűen gépelt λ-kalkulus. jól tipizált cselszövő fix pontot nem lehet építeni. Az ilyen rendszerekben minden támogatást rekurzió kifejezetten meg kell határozni a jelöléssel. Más rendszerekben, mint például egyszerűen gépelt λ-kalkulus rekurzív típusú hozzá. fix pont combinators lehet építeni, de a típusát „hasznos” combinators (pl amelynek használata mindig visszatér) is tilos.
Például, a programozási nyelv standard ML megvalósítási módja kombinátor Y hívni típus jelentőségteljesen ∀a.∀b. ((A → b) → (A → B)) → (A → B), míg a lehetőséget arra, hogy az neve típusú ∀a. (a → a) → a. Lehetőséget arra, hogy nevében a hurkok alkalmazva szigorú nyelven. Yf mert minden használat mindig zajlik f (yf). Továbbá, az érvelés számítjuk külső f függvény. mivel szükség van rá a hívás stratégia értéke, és a kapott értéket f (f (Yf)). Ez a folyamat megy a végtelenségig, de az értéke ennek a kérelem beérkezik soha nem lesz.
Példa [idézet]
Tekintsük az kiszámítására faktoriális (A. Egyház jelölés). Átlagos rekurzív matematikai definíciója a következő:
Láthatjuk újabb lépés kiszámításához ez a rekurzió jelölést λ-kalkulus:
F = λf.λx. (ISZERO x) 1 (mult X (f (PRED x)))
ahol «f» - paramétert funkció faktoriális. F függvény egy lépéssel rekurzió a fenti képletben. Amikor a vele szemben alkalmazott fix pont kombinátor rögzíti, hogy a következő sorrendben nyilatkozatok:
További alkalmazási lehet nevezni fix (F) valójában. hanem azért, mert:
Valójában (n) = (ISZERO n) 1 (mult N (tény (PRED n)))
Így világos, hogy egy fix pont kombinátor valóban átalakítja nem-rekurzív függvény, amely kiszámítja egy rekurziós lépésben, egy rekurzív függvény kielégíti a fenti képlettel.
Egyéb combinators fix pont [szabály]
Verzió kombinátor Y. amelyeket fel lehet használni a call-by-értéket (segítségével meghatároztuk η-csökkenés):
Y kombináló lehet kifejezni a kombinatorikus SKI alapján az alábbiak szerint:
A legegyszerűbb (amely a legkisebb számú bázis combinators terjeszkedés alapja) a fix pont kombinátor alapján SK. D. Tromp talált:
Ez a bejegyzés megfelel az alábbi λ-kifejezést.
Tovább fixpontos kombinátor talált Turing.
Ez kombinátor is van egy egyszerű formája a hívást az értéket:
Fix pont combinators nem olyan ritka, (ezek általában végtelen sok). Néhány alkalmazunk szórakozás (L kifejezés megtalálható benne 26 alkalommal):