www.wikidata.uk-ua.nina.az
Spiskovi virazi angl list comprehension sintaksichna konstrukciya dostupna v deyakih movah programuvannya yaka priznachena dlya stvorennya spiskiv zastosuvannyam operacij nad uzhe nayavnimi spiskami Vona vidpovidaye matematichnij notaciyi pobudovi mnozhini i zaminyuye vikoristannya funkcij map ta filter Zmist 1 Opis 2 Istoriya 3 Prikladi v riznih movah programuvannya 3 1 C 3 2 Ceylon 3 3 Clojure 3 4 CoffeeScript 3 5 Common Lisp 3 6 Erlang 3 7 F 3 8 Groovy 3 9 Haskell 3 10 Perl 6 3 11 PowerShell 3 12 Python 4 Div takozh 5 Posilannya 5 1 Haskell 5 2 OCaml 5 3 Python 5 4 Common Lisp 5 5 Clojure 5 6 Axiom 5 7 ReshtaOpis red Rozglyanmo nastupnij priklad zapisu mnozhini S 2 x x N x 2 gt 3 displaystyle S 2 cdot x mid x in mathbb N x 2 gt 3 nbsp Ce mozhna prochitati yak S displaystyle S nbsp mnozhina vsih chisel vidu 2 na x displaystyle x nbsp de x displaystyle x nbsp element z mnozhini naturalnih chisel N displaystyle mathbb N nbsp takij sho x displaystyle x nbsp u kvadrati bilshe nizh 3 displaystyle 3 nbsp V movi Haskell takij zapis mnozhini mozhna vidtvoriti takim spiskovim virazom s 2 x x lt 1 x 2 gt 3 Tut spisok 1 predstavlyaye N displaystyle mathbb N nbsp x 2 gt 3 predstavlyaye predikat a 2 x vihidnij viraz Spiskovi virazi dayut rezultati v oznachenomu poryadku na vidminu vid chleniv mnozhini i mozhut generuvati elementi za potreboyu a ne odrazu ves spisok dozvolyayuchi takim chinom napriklad poperednye oznachennya chleniv neskinchennoyi mnozhini Istoriya red Mova programuvannya SETL kinec 1960 tih mala instrukciyi konstruyuvannya mnozhin i sistema komp yuternoyi algebri AXIOM 1973 mala podibni konstrukciyi yaki obroblyali potoki ale vpershe termin comprehension dlya takih konstrukcij buv vikoristanij Rodom Burstalom ta Dzhonom Darlingtonom v opisi movi programuvannya NPL 1977 Smalltalk block context messages yakimi ye spiskovi virazi buli v cij movi shonajmenshe z chasiv Smalltalk 80 Robota Burstala ta Darglingtona z NPL vplinula na bagato mov programuvannya protyagom 1980 tih ale ne vsi z nih vklyuchali spiskovi virazi Vinyatkom bula vplivova liniva chisto funkcionalna mova programuvannya Miranda vipushena v 1985 tomu Rozroblena piznishe tezh cilkom funkcionalna mova z linivimi obchislennyami Haskell uvibrala bagato osoblivostej Mirandi vklyuchno z spiskovimi virazami Mova programuvannya Python tezh zaznala silnogo vplivu linivih funkcionalnih mov i vvela spiskovi virazi Chisti funkcionalni movi zalishayutsya nishevimi u toj chas yak Python stav znachno populyarnishim i predstaviv spiskovi virazi shirshij avditoriyi Spiskovi virazi proponuvalis yak notaciya zapitiv do baz danih 1 i buli realizovani v movi zapitiv Kleisli 2 Prikladi v riznih movah programuvannya red Dali jtimut prikladi sintaksisu spiskovih viraziv u riznih movah programuvannya Hocha v originalnomu prikladi vikoristovuyetsya neskinchennij spisok viraziti jogo mozhut ne vsi movi tomu v deyakih mi pokazhemo yak vikoristati pidmnozhinu 0 1 100 displaystyle 0 1 100 nbsp zamist pidmnozhini N displaystyle mathbb N nbsp C red var s from x in Enumerable Range 0 100 where x x gt 3 select x 2 chi var s Enumerable Range 0 100 Where x gt x x gt 3 Select x gt x 2 Ceylon red for x in 0 100 if x 2 gt 3 x 2 Clojure red Clojure generuye neskinchenni linivi poslidovnosti podibno do Gaskelya chi generatoriv Pajtona Vikoristovujte take shob otrimati pershi N rezultativ neskinchennoyi poslidovnosti take 20 for x iterate inc 0 when gt x x 3 2 x CoffeeScript red x 2 for x in 0 20 when x x gt 3 Common Lisp red Spiskovi virazi mozhut virazhatis za dopomogoyu klyuchovogo slova collect makrosa loop Umovi virazhayutsya za dopomogoyu if yak pokazano nizhche loop for x from 0 to 100 if gt x x 3 collect 2 x Neskinchenna liniva poslidovnist mozhe stvoryuvatis riznimi sposobami napriklad za dopomogoyu ob yektiv CLOS chi makrosom yield Erlang red S 2 X X lt lists seq 0 100 X X gt 3 F red Virazi mayut formu for x in collection do yield expr dlya spiskiv ta seq for x in collection do yield expr dlya poslidovnostej gt seq for x in 0 100 do if x x gt 3 then yield 2 x val it seq lt int gt seq 4 6 8 10 Groovy red Groovy pidtrimuye virazi dlya takih kolekcij v Java yak list set map s 1 100 grep it 2 gt 3 collect it 2 Zminna it ye skorochennyam neyavnogo parametra zamikannya Nastupnij kod ye ekvivalentom poperednogo s 1 100 grep x gt x 2 gt 3 collect x gt x 2 Haskell red s 2 x x lt 0 x 2 gt 3 Perl 6 red my s 2 if 2 gt 3 for 100 chi my s gather for 100 take 2 if 2 gt 3 PowerShell red 0 100 Where gt 3 ForEach 2 Python red S 2 x for x in range 101 if x 2 gt 3 nbsp Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Div takozh red Operator SELECT v SQL Monadi Inshi konstrukciyi dlya obrobki poslidovnostej Generator programuvannya Map funkciya vishogo poryadku Inshi konstrukciyi programuvannya pereneseni z matematichnih form zapisu Varta Zistavlennya zi zrazkom Operator programuvannya Posilannya red Comprehensions a query notation for DBPLs The functional guts of the Kleisli query system List Comprehension in The Free On line Dictionary of Computing Editor Denis Howe Trinder Phil 1992 Comprehensions a query notation for DBPLs Proceedings of the third international workshop on Database programming languages bulk types amp persistent data Nafplion Greece s 55 68 Wadler Philip 1990 Comprehending Monads Proceedings of the 1990 ACM Conference on LISP and Functional Programming Nice Arhiv originalu za 29 bereznya 2008 Procitovano 22 lipnya 2011 Wong Limsoon 2000 The Functional Guts of the Kleisli Query System Proceedings of the fifth ACM SIGPLAN international conference on Functional programming International Conference on Functional Programming s 1 10 Haskell red The Haskell 98 Report chapter 3 11 List Comprehensions Arhivovano 11 listopada 2020 u Wayback Machine The Glorious Glasgow Haskell Compilation System User s Guide chapter 7 3 4 Parallel List Comprehensions The Hugs 98 User s Guide chapter 5 1 2 Parallel list comprehensions a k a zip comprehensions OCaml red OCaml Batteries Included Arhivovano 26 chervnya 2011 u Wayback Machine Language extensions introduced in OCaml Batteries Included Arhivovano 3 bereznya 2016 u Wayback Machine Python red Python Reference Manual chapter 5 2 4 List displays Python Enhancement Proposal PEP 202 List Comprehensions Arhivovano 16 travnya 2008 u Wayback Machine Python Reference Manual chapter 5 2 5 Generator expressions Python Enhancement Proposal PEP 289 Generator Expressions Arhivovano 6 veresnya 2008 u Wayback Machine Common Lisp red Implementation of a Lisp comprehension macro Arhivovano 19 lipnya 2011 u Wayback Machine by Guy LapalmeClojure red Clojure API documentation for macro Arhivovano 22 lipnya 2011 u Wayback Machine Axiom red Axiom stream examplesReshta red SQL podibni operatori nad mnozhinami v Python Cookbook Arhivovano 2 lipnya 2008 u Wayback Machine angl Obgovorennya generatornih spiskiv ta pov yazanih konstrukcij v Scheme Arhivovano 28 lipnya 2020 u Wayback Machine angl Generatorni spiski v riznih movah programuvannya Arhivovano 9 listopada 2020 u Wayback Machine angl Otrimano z https uk wikipedia org w index php title Spiskovi virazi amp oldid 40374444