Свёртка списка

Свёртка списка (англ. folding, также известна как reduce, accumulate) в программировании — функция высшего порядка, которая производит преобразование структуры данных к единственному атомарному значению при помощи заданной функции. Операция свёртки часто используется в функциональном программировании при обработке списков. Свёртка может быть обобщена на произвольный алгебраический тип данных при помощи понятия катаморфизма[англ.] из теории категорий.

Функция свёртки обычно принимает три аргумента: комбинирующую функцию f, начальное значение start и структуру данных seq (список — в простейшем варианте). В зависимости от свойств комбинирующей функции могут быть различные реализации и различные стратегии вычисления. Иногда функция свёртки не принимает начального значения, но требует непустого списка; но во многих случаях бывает нужным задать ненулевое начальное значение, которое будет использовано при первом применении комбинирующей функции. Использование начального значения необходимо, когда тип результата комбинирующей функции отличается от типа элементов списка, тогда начальное значение должно быть того же типа что и тип результата.

Ассоциативность

Для свёртки по ассоциативной операции порядок вычисления не влияет на результат, например, вычисление суммы чисел списка (1 2 3 4 5), то есть его свёртки по сумме, может быть произведено в любом порядке: или или , что позволяет выполнять вычисление свёртки разных частей списка одновременно, то есть распараллеливать вычисление свёртки списка в многопроцессорных и кластерных системах.

Для неассоциативных операций порядок имеет значение, поэтому в общем случае для свёртки требуется задать порядок вычислений, в связи с этим различают свёртку справа (правоассоциативную) и свёртку слева (левоассоциативную). Например, для списка seq := (elem_1 elem_2 ... elem_n) функция левоассоциативной свёртки вычислит значение выражения:

(f ... (f (f start elem_1) elem_2) ... elem_n)

а правоассоциативная:

(f elem_1 (f elem_2 ... (f elem_n start) ... )).

Примеры

Факториал n можно представить как свёртку списка, состоящего из чисел от 2 до n, при помощи операции умножения (к примеру, на языке Haskell):

 fac n = foldl (*) 1 [2..n]

Здесь:

fac — объявление функции факториала
n — входной параметр
после знака = (равно) идёт определение функции
foldl — функция свёртки
1 — начальное значение для свёртки
[2..n] — задаётся список по которому следует делать свёртку — числа от 2 до n

Пример аналогичной функции на языке Scala:

 def fac(n: BigInt) = (BigInt(2) to n).foldLeft(BigInt(1))(_ * _)

Литература

  • Bird, Richard. Pearls of Functional Algorithm Design (англ.). — Cambrigde: University Press, 2010. — 277 p. — ISBN 978-0-521-51338-8.
  • Бёрд Р. Жемчужины проектирования алгоритмов: функциональный подход = Pearls of Functional Algorithm Design. — ДМК Пресс, 2013. — 330 с. — ISBN 978-5-94074-867-0. (недоступная ссылка)
  • Hutton, Graham. A tutorial on the universality and expressiveness of fold (англ.) // Journal of Functional Programming. — Vol. 9, no. 4. — P. 355–372. — ISSN 0956-7968.

Read other articles:

Ga-Rei喰霊(Ga-rei)GenreLaga, supranatural[1] MangaPengarangHajime SegawaPenerbitKadokawa ShotenMajalahShōnen AceDemografiShōnenTerbit26 Oktober 2005 – 26 Januari 2010Volume12 MangaGa-rei: Tsuina no ShōPengarangHajime SegawaPenerbitKadokawa ShotenMajalahShōnen AceDemografiShōnenTerbit2008 – 2009Volume1 Seri animeGa-Rei: ZeroSutradaraEi AokiProduserAtsushi ItōSkenarioKatsuhiko TakayamaMusikNoriyasu AgematsuStudioAIC SpiritsAsreadPelisensiAUS Madman EntertainmentEU MVM FilmsN...

 

Archeology and art museum in rue Simon Reims, FranceMusée Saint-RemiMusée Saint-Remi (former Abbey of Saint-Remi, at the back), with the Basilica of Saint-Remi standing next to itLocation53 rue Simon 51100 Reims, FranceCoordinates49°14′36″N 04°02′29″E / 49.24333°N 4.04139°E / 49.24333; 4.04139TypeArcheology and art museumWebsitemusees-reims.fr The Musée Saint-Remi is an archeology and art museum in Reims, France. The museum is housed in the former Abbey ...

 

Bài viết này cần thêm chú thích nguồn gốc để kiểm chứng thông tin. Mời bạn giúp hoàn thiện bài viết này bằng cách bổ sung chú thích tới các nguồn đáng tin cậy. Các nội dung không có nguồn có thể bị nghi ngờ và xóa bỏ. (tháng 10/2022) Bài viết hoặc đoạn này cần người am hiểu về chủ đề này trợ giúp biên tập mở rộng hoặc cải thiện. Bạn có thể giúp cải thiện trang này nếu có t...

Maltese talk show XarabankGenreTalk showDirected byXandru AzzopardiPresented byPeppi AzzopardiMark Laurence ZammitVoices ofPeter John PJ VassalloMark Laurence ZammitTheme music composerElton ZarbCountry of originMaltaOriginal languageMalteseProductionExecutive producerVassalloProduction locationsWE MEDIAGwardamanġa, MaltaProduction companyWE MEDIAOriginal releaseNetworkTelevision MaltaRelease4 April 1997 (1997-04-04) –June 2020 (June 2020)RelatedBijografiji Xarabank was a pr...

 

Cet article est une ébauche concernant un coureur cycliste serbe. Vous pouvez partager vos connaissances en l’améliorant (comment ?). Pour plus d’informations, voyez le projet cyclisme. Pour les articles homonymes, voir Veselinović. Dušan VeselinovićInformationsNaissance 6 juin 1999 (24 ans)Nationalité serbeÉquipes non-UCI 2018-2021Partizan-Beograd2021ASD Andrea CattoliÉquipes UCI 2018Java-Partizanmodifier - modifier le code - modifier Wikidata Dušan Veselinović (né ...

 

Concours Eurovision de la chanson 2000 Dates Finale 13 mai 2000 Retransmission Lieu GlobenStockholm, Suède Présentateur(s) Kattis AhlströmAnders Lundin Superviseur exécutif Christine Marchal-Ortiz Télédiffuseur hôte SVT Ouverture Vues de la Suède Entracte Once Upon a Time Europe Was Covered With Ice, par Caroline Lundgren, Bounce et Strängnäs Drumcorps Participants Nombre de participants 24 Débuts Lettonie Retour Finlande Macédoine Roumanie Russie Suisse Relégation Bosnie-Herzé...

American actress (1974–2019) Not to be confused with Lisa Sheridan-Paolini. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Lisa Sheridan – news · newspapers · books · scholar · JSTOR (March 2019) (Learn how and when to remove this message) Lisa SheridanBornElizabeth Childress Sheridan[1]December 5...

 

Запрос «Пугачёва» перенаправляется сюда; см. также другие значения. Алла Пугачёва На фестивале «Славянский базар в Витебске», 2016 год Основная информация Полное имя Алла Борисовна Пугачёва Дата рождения 15 апреля 1949(1949-04-15) (75 лет) Место рождения Москва, СССР[1]...

 

كأس السويد 2012–13 تفاصيل الموسم كأس السويد  النسخة 57  البلد السويد  التاريخ بداية:3 يونيو 2012  نهاية:26 مايو 2013  المنظم اتحاد السويد لكرة القدم  البطل نادي غوتبورغ  مباريات ملعوبة 119   عدد المشاركين 96   كأس السويد 2011  كأس السويد 2013–14  تعديل مصدري - تعدي...

Questa voce sull'argomento centri abitati del Kent è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Penshurstparrocchia civilePenshurst – Veduta LocalizzazioneStato Regno Unito    Inghilterra RegioneSud Est Contea Kent DistrettoSevenoaks TerritorioCoordinate51°10′13.48″N 0°10′47.89″E / 51.170411°N 0.179969°E51.170411; 0.179969 (Penshurst)Coordinate: 51°10′13.48″N 0°10′47.89″E࿯...

 

Team sport in athletics, swimming, etc This article is about relay races in sport. For relay races in electronic circuits and in ladder logic, see race condition. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Relay race – news · newspapers · books · scholar · JSTOR (May 2012) (Learn how and when to remove ...

 

2020年夏季奥林匹克运动会波兰代表團波兰国旗IOC編碼POLNOC波蘭奧林匹克委員會網站olimpijski.pl(英文)(波兰文)2020年夏季奥林匹克运动会(東京)2021年7月23日至8月8日(受2019冠状病毒病疫情影响推迟,但仍保留原定名称)運動員206參賽項目24个大项旗手开幕式:帕维尔·科热尼奥夫斯基(游泳)和马娅·沃什乔夫斯卡(自行车)[1]闭幕式:卡罗利娜·纳亚(皮划艇)&#...

Приём у президента Аргентины Кристины Фернандес де Киршнер (в центре) по поводу получения фильмом «Тайна в его глазах» премии «Оскар», второй за историю национального кинематографа. Буэнос-Айрес, Каса-Росада, 2010 год. Присутствуют (слева направо): режиссёр Хуан Хосе Кампан...

 

Сортировщики монет за работой Монетный кризис XVII века (нем. Kipper- und Wipperzeit — дословно «Время сортирующих и взвешивающих»[1]) — массовая порча монет в государствах центральной Европы, которая привела к крупнейшей инфляции на территории Священной Римской импери...

 

Transport of a substance by bulk motion This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Advection – news · newspapers · books · scholar · JSTOR (May 2022) (Learn how and when to remove this message) In the field of physics, engineering, and earth sciences, advection is the transport of a substance or quantit...

Municipality and city in Oaxaca, MexicoSan Juan Bautista TuxtepecMunicipality and cityFormer Tuxtepec Cathedral SealSan Juan Bautista Tuxtepec in OaxacaSan Juan Bautista TuxtepecCoordinates: 18°06′N 96°07′W / 18.100°N 96.117°W / 18.100; -96.117Country MexicoStateOaxacaMunicipalitySan Juan Bautista TuxtepecFoundedC. 14th (?)Municipality created1811Area • Total877 km2 (339 sq mi) • Municipal Seat41.92 km2 (16.19...

 

Motor vehicle Dodge Series D5Dodge D5 Business CoupeOverviewManufacturerDodge (Chrysler)Also calledDodge Series D6/D7 (export models)Model years1937AssemblyHamtramck Assembly, Hamtramck, MichiganEvansville Assembly, Evansville, IndianaCanada: Windsor Assembly, Windsor, OntarioBody and chassisClassFull-sizeBody style2-door coupe2/4-door sedan2/4-door convertible4-door limousineLayoutFR layoutPowertrainEngine170 cu in (2,793 cc) D6 sv I6201 cu in (3,299&#...

 

Independent traditionalist Catholic order Not to be confused with Notre-Dame de Chrétienté. Fraternité Notre-DameFormation1977FounderJean Marie KozikHeadquartersChicago, Illinois Fraternité Notre-Dame is a traditionalist Catholic order of priests and nuns that is not in union with the Pope. Origins The origins of Fraternité Notre-Dame are in the reported apparitions of the Virgin Mary in Fréchou, France. They were allegedly received in 1977 by Jean Marie Kozik, a Frenchman of Polish ori...

Edward Rowe Mores (1731-1778) Edward Rowe Mores (24 Januari 1731 – 22 November 1778) adalah pakar keilmuan dan kajian kuno dari Britania. Karya tulisnya meliputi bidang sejarah dan tipografi, serta mendirikan The Equitable Life Assurance Society, sebuah perusahan asuransi jiwa yang inovatif pada masanya. Ia dianggap sebagai orang pertama yang menggunakan istilah aktuaris untuk pekerjaan di bidang asuransi. Referensi Ogborn, M. E. (1956). The Professional Name of Actuary (PDF). Journal of th...

 

Church in Ottawa, OntarioSt. Bartholomew's Anglican ChurchSt. Bartholomew's Anglican Church Ottawa, OntarioLocation125 MacKay StreetOttawa, OntarioK1M 2B4DenominationAnglican Church of CanadaWebsitestbartsottawa.caHistoryDedicationSt. BartholomewAdministrationProvinceEcclesiastical Province of OntarioDioceseAnglican Diocese of Ottawa St. Bartholomew's Anglican Church is a place of worship in Ottawa, Ontario, Canada. The building was constructed in the latter half of the 19th century and serve...