FP (programovací jazyk) - FP (programming language)
Paradigma | Funkční úroveň |
---|---|
Navrhl | John Backus |
Poprvé se objevil | 1977 |
Dialekty | |
FP84 | |
Ovlivněno | |
APL[1] | |
Ovlivněno | |
FL, Haskell |
FP (zkratka pro Funkcionální programování)[2] je programovací jazyk vytvořil John Backus podporovat programování na funkční úrovni[2] paradigma. To umožňuje vyloučit pojmenované proměnné. Jazyk byl představen v Backusově roce 1977 Turing Award příspěvek „Může být programování osvobozeno od von Neumannova stylu?“ s podtitulem „funkční styl a jeho algebra programů“. Příspěvek vyvolal zájem o výzkum funkčního programování,[3] nakonec vedlo k moderním funkčním jazykům, a nikoli k paradigmatu na funkční úrovni, ve které Backus doufal.
Backus ve svém Turing Award Paper popsal, jak se styl FP liší od jazyků založených na lambaovém počtu:
Systém FP je založen na použití pevné sady kombinujících forem nazývaných funkční formy. Tyto plus jednoduché definice jsou jediným prostředkem k vytváření nových funkcí ze stávajících; nepoužívají žádné proměnné ani pravidla nahrazování a stávají se operací přidružené algebry programů. Všechny funkce systému FP jsou jednoho typu: mapují objekty na objekty a vždy používají jediný argument.[2]
Samotná FP nikdy nenašla mnoho využití mimo akademickou obec.[4] V 80. letech vytvořil Backus nástupnický jazyk, FL, který zůstal výzkumným projektem.
Přehled
The hodnoty že programy FP mapují jeden do druhého a soubor který je Zavřeno pod tvorba sekvence:
-li X1,...,Xn jsou hodnoty, pak sekvence 〈X1,...,Xn〉 Je také a hodnota
Tyto hodnoty lze sestavit z libovolné sady atomů: boolovská čísla, celá čísla, reálná čísla, znaky atd .:
booleovský : {T, F}celé číslo : {0,1,2,...,∞}charakter : {'a', 'b', 'c', ...}symbol : {X,y,...}
⊥ je nedefinováno hodnota nebo dno. Sekvence jsou zachování dna:
〈X1,...,⊥,...,Xn〉 = ⊥
Programy FP jsou funkce F že každá mapa je jedna hodnota X do jiného:
F:X představuje hodnota který vyplývá z použití funkce F do hodnota X
Funkce jsou buď primitivní (tj. Poskytované v prostředí FP), nebo jsou vytvořeny z primitivů pomocí programotvorné operace (také zvaný funkcionáři).
Příkladem primitivní funkce je konstantní, který transformuje hodnotu X do funkce s konstantní hodnotou X. Funkce jsou přísný:
F:⊥ = ⊥
Dalším příkladem primitivní funkce je volič rodina funkcí, označená 1,2, ... kde:
i:〈X1,...,Xn〉 = Xi pokud 1 ≤ i ≤ n = ⊥ jinak
Funkční
Na rozdíl od primitivních funkcí fungují funkcionály na jiných funkcích. Například některé funkce mají a jednotka hodnota, například 0 pro přidání a 1 pro násobení. Funkční jednotka vyrábí takové a hodnota při aplikaci na a funkce f který má jeden:
jednotka + = 0jednotka × = 1jednotka foo = ⊥
Toto jsou hlavní funkcionáři FP:
složení F∘G kde F∘G:X = F:(G:X)
konstrukce [F1,...,Fn] kde [F1,...,Fn]:X = 〈F1:X,...,Fn:X〉
stav (h ⇒ F;G) kde (h ⇒ F;G):X = F:X -li h:X = T = G:X -li h:X = F = ⊥ v opačném případě
aplikujte na vše αF kde αF:〈X1,...,Xn〉 = 〈F:X1,...,F:Xn〉
vložte vpravo /F kde /F:〈X〉 = X a /F:〈X1,X2,...,Xn〉 = F:〈X1,/F:〈X2,...,Xn>> a /F:〈 〉 = jednotka f
vložka-levá \F kde F:〈X〉 = X a F:〈X1,X2,...,Xn〉 = F:〈\F:〈X1,...,Xn-1〉,Xn> a F:〈 〉 = jednotka f
Rovnicové funkce
Kromě toho, že je funkce vytvořena z primitiv funkcemi, může být funkce definována rekurzivně pomocí rovnice, nejjednodušší druh je:
F ≡ EF
kde EF je výraz vytvořeno z primitiv, dalších definovaných funkcí a symbolu funkce F sám, pomocí funkcionálů.
FP84
FP84 je rozšíření FP o zahrnutí nekonečné sekvence, definováno programátorem kombinování forem (analogicky k těm, které sám Backus přidal FL, jeho nástupce po FP) a líné hodnocení. Na rozdíl od FFP, další z Backusových vlastních variací na FP, FP84 jasně rozlišuje mezi objekty a funkcemi: tj. Ty již nejsou reprezentovány sekvencemi toho prvního. Rozšíření FP84 se provádí odstraněním omezení FP, na které se konstrukce sekvence použije pouze ne-⊥ objekty: v FP84 je celý vesmír výrazů (včetně těch, jejichž význam je ⊥) uzavřeno pod sekvence konstrukce.
Sémantika FP84 je zakotvena v základní algebře programů, sadě úroveň funkcí rovnosti, které lze použít k manipulaci a uvažování o programech.
Viz také
Reference
- ^ Koncepce, vývoj a aplikace funkčních programovacích jazyků Archivováno 11.03.2016 na Wayback Machine Paul Hudak, 1989
- ^ A b C Backus, J. (1978). „Může být programování osvobozeno od von Neumannova stylu ?: Funkční styl a jeho algebra programů“. Komunikace ACM. 21 (8): 613. doi:10.1145/359576.359579.
- ^ Yang, Jean (2017). "Rozhovor se Simonem Peyton-Jonesem". Lidé programovacích jazyků.
- ^ Hague, James (28. prosince 2007). "Archeologie funkčního programování". Programování ve dvacátém prvním století.
- Obětavá jednoduchost pro pohodlí: Kde nakreslíte čáru?, John H. Williams a Edward L. Wimmers, IBM Almaden Research Center, Proceedings of the Fifthenth Annual ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, San Diego, CA, leden 1988.
externí odkazy
- Implementace FP
- Interaktivní FP (vyžaduje Javu), Stránka nápovědy
- FP drobnosti (Němec)