Čisto funkcionalni programski jezik

U računarstvu, algoritmi, strukture podataka ili programski jezici se nazivaju čisto funkcionalni ako garantuju (slab) ekvivalentnost call-by-name, call-by-value i call-by-need strategija evaluacije, često bez destruktivne modifikacije (ispravke) entiteta u programskom sistemu izvršavanja.[1] Prema ovom ograničenju, promenljive se koriste u matematičkom smislu, sa identifikatorima koji se odnose na nepromenljive, perzistentne vrednosti.

Za predstavljanje izračunavanja koje obavljaju sporedne efekte u čistom funkcionalnom programskom jeziku, mogu se koristiti monade, kao što je predložio Filip Vadler.[2]

Haskell je jedan od najpoznatijih savremenih primera čistog funkcionalnog programskog jezika.

Čiste funkcionalne strukture podataka se često predstavljaju na drugačiji način nego njihovi imperativni partneri.[3]

Prednosti i aplikacije

uredi

Istrajno svojstvo čisto funkcionalne strukture podataka može da bude prednost u razvoju mnogih aplikacija kojim se bave više verzija jednog objekta.

Na primer, razmotrimo sveobuhvatne veb-osnovne rečnike usluga koji koriste veliko crveno-crno drvo za skladištenje svojih lista sinonima odnosa, a koji omogućavaju svakom korisniku da dodaju svoje sopstvene prilagođene reči u svoj lični rečnik. Jedan od načina da to uradite je da napravite kopiju drveta za svakog korisnika, a zatim dodajte svoje prilagođene reči na njega; međutim, ovo kopiranje se rasipa, u prostoru i vremenu.

Bolji pristup je da sačuvate reči u nepromenljivom (i stoga čisto funkcionalne) crveno-crnom drvetu. Zatim, jednostavno možete da uzmete originalnu verziju i napravite novo osnovno drvo za svaki skup carinskih reči. Zbog ovog novo drveće deli velike količine struktura sa glavnim drvetom, prostor iznad glave za svakog dodatnog korisnika je najviše 2klog2n, gde je k broj carinskih čvorova. Sa jednom promenljivom crveno-crnog stabla, ovaj pristup ne bi funkcionisao, jer promene u glavnom stablu utiču na sve korisnike.

Pored svojih efikasnih prednosti, svojstvena referentna transparentnost funkcionalnih struktura podataka teži da potpuno funkcionalno proračuna više podložnih analiza i optimizacija, i formalno i neformalno.

Vidi još

uredi

Reference

uredi
  1. ^ Sabry, Amr (1998). „What is a purely functional language?”. Journal of Functional Progrmaming. 8 (1): 1—22. 
  2. ^ Comprehending Monads by Philip Wadler, Cambridge University Press, Mathematical Structures in Computer Science / Volume 2 / Issue 04 / December (1992). str. 461-493
  3. ^ Purely functional data structures by Chris Okasaki, Cambridge University Press. 1998. ISBN 978-0-521-66350-2.

Spoljašnje veze

uredi