{"id":"https://openalex.org/W2173780645","doi":"https://doi.org/10.1017/s0956796809007291","title":"The essence of the <scp>Iterator</scp> pattern","display_name":"The essence of the <scp>Iterator</scp> pattern","publication_year":2009,"publication_date":"2009-06-09","ids":{"openalex":"https://openalex.org/W2173780645","doi":"https://doi.org/10.1017/s0956796809007291","mag":"2173780645"},"language":"en","primary_location":{"id":"doi:10.1017/s0956796809007291","is_oa":true,"landing_page_url":"https://doi.org/10.1017/s0956796809007291","pdf_url":"https://www.cambridge.org/core/services/aop-cambridge-core/content/view/3FC26EB2A63E6A2B29E07B9F0D5C5BCD/S0956796809007291a.pdf/div-class-title-the-essence-of-the-span-class-sc-iterator-span-pattern-div.pdf","source":{"id":"https://openalex.org/S12266929","display_name":"Journal of Functional Programming","issn_l":"0956-7968","issn":["0956-7968","1469-7653"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310311721","host_organization_name":"Cambridge University Press","host_organization_lineage":["https://openalex.org/P4310311721","https://openalex.org/P4310311702"],"host_organization_lineage_names":["Cambridge University Press","University of Cambridge"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Journal of Functional Programming","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"bronze","oa_url":"https://www.cambridge.org/core/services/aop-cambridge-core/content/view/3FC26EB2A63E6A2B29E07B9F0D5C5BCD/S0956796809007291a.pdf/div-class-title-the-essence-of-the-span-class-sc-iterator-span-pattern-div.pdf","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5086558126","display_name":"Jeremy Gibbons","orcid":"https://orcid.org/0000-0002-8426-9917"},"institutions":[{"id":"https://openalex.org/I40120149","display_name":"University of Oxford","ror":"https://ror.org/052gg0110","country_code":"GB","type":"education","lineage":["https://openalex.org/I40120149"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"JEREMY GIBBONS","raw_affiliation_strings":["Oxford University Computing Laboratory, Wolfson Building, Parks Road, Oxford OX1 3QD, UK (e-mail:"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Oxford University Computing Laboratory, Wolfson Building, Parks Road, Oxford OX1 3QD, UK (e-mail:","institution_ids":["https://openalex.org/I40120149"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5049714036","display_name":"Bruno C. d. S. Oliveira","orcid":"https://orcid.org/0000-0002-1846-7210"},"institutions":[{"id":"https://openalex.org/I40120149","display_name":"University of Oxford","ror":"https://ror.org/052gg0110","country_code":"GB","type":"education","lineage":["https://openalex.org/I40120149"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"BRUNO C. d. S. OLIVEIRA","raw_affiliation_strings":["Oxford University Computing Laboratory, Wolfson Building, Parks Road, Oxford OX1 3QD, UK (e-mail:"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Oxford University Computing Laboratory, Wolfson Building, Parks Road, Oxford OX1 3QD, UK (e-mail:","institution_ids":["https://openalex.org/I40120149"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I40120149"],"apc_list":null,"apc_paid":null,"fwci":7.9944,"has_fulltext":true,"cited_by_count":62,"citation_normalized_percentile":{"value":0.97529087,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":89,"max":99},"biblio":{"volume":"19","issue":"3-4","first_page":"377","last_page":"402"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T12002","display_name":"Computability, Logic, AI Algorithms","score":0.9753999710083008,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T11010","display_name":"Logic, Reasoning, and Knowledge","score":0.972599983215332,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.906256914138794},{"id":"https://openalex.org/keywords/modular-design","display_name":"Modular design","score":0.6367661356925964},{"id":"https://openalex.org/keywords/modularity","display_name":"Modularity (biology)","score":0.6139074563980103},{"id":"https://openalex.org/keywords/traverse","display_name":"Traverse","score":0.5362346172332764},{"id":"https://openalex.org/keywords/simple","display_name":"Simple (philosophy)","score":0.4785881042480469},{"id":"https://openalex.org/keywords/tree-traversal","display_name":"Tree traversal","score":0.46845579147338867},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.4604658782482147},{"id":"https://openalex.org/keywords/operator","display_name":"Operator (biology)","score":0.4347628951072693},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.4219609498977661}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.906256914138794},{"id":"https://openalex.org/C101468663","wikidata":"https://www.wikidata.org/wiki/Q1620158","display_name":"Modular design","level":2,"score":0.6367661356925964},{"id":"https://openalex.org/C2779478453","wikidata":"https://www.wikidata.org/wiki/Q6889748","display_name":"Modularity (biology)","level":2,"score":0.6139074563980103},{"id":"https://openalex.org/C176809094","wikidata":"https://www.wikidata.org/wiki/Q15401496","display_name":"Traverse","level":2,"score":0.5362346172332764},{"id":"https://openalex.org/C2780586882","wikidata":"https://www.wikidata.org/wiki/Q7520643","display_name":"Simple (philosophy)","level":2,"score":0.4785881042480469},{"id":"https://openalex.org/C140745168","wikidata":"https://www.wikidata.org/wiki/Q1210082","display_name":"Tree traversal","level":2,"score":0.46845579147338867},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.4604658782482147},{"id":"https://openalex.org/C17020691","wikidata":"https://www.wikidata.org/wiki/Q139677","display_name":"Operator (biology)","level":5,"score":0.4347628951072693},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.4219609498977661},{"id":"https://openalex.org/C185592680","wikidata":"https://www.wikidata.org/wiki/Q2329","display_name":"Chemistry","level":0,"score":0.0},{"id":"https://openalex.org/C55493867","wikidata":"https://www.wikidata.org/wiki/Q7094","display_name":"Biochemistry","level":1,"score":0.0},{"id":"https://openalex.org/C54355233","wikidata":"https://www.wikidata.org/wiki/Q7162","display_name":"Genetics","level":1,"score":0.0},{"id":"https://openalex.org/C158448853","wikidata":"https://www.wikidata.org/wiki/Q425218","display_name":"Repressor","level":4,"score":0.0},{"id":"https://openalex.org/C111472728","wikidata":"https://www.wikidata.org/wiki/Q9471","display_name":"Epistemology","level":1,"score":0.0},{"id":"https://openalex.org/C104317684","wikidata":"https://www.wikidata.org/wiki/Q7187","display_name":"Gene","level":2,"score":0.0},{"id":"https://openalex.org/C13280743","wikidata":"https://www.wikidata.org/wiki/Q131089","display_name":"Geodesy","level":1,"score":0.0},{"id":"https://openalex.org/C86339819","wikidata":"https://www.wikidata.org/wiki/Q407384","display_name":"Transcription factor","level":3,"score":0.0},{"id":"https://openalex.org/C138885662","wikidata":"https://www.wikidata.org/wiki/Q5891","display_name":"Philosophy","level":0,"score":0.0},{"id":"https://openalex.org/C205649164","wikidata":"https://www.wikidata.org/wiki/Q1071","display_name":"Geography","level":0,"score":0.0},{"id":"https://openalex.org/C86803240","wikidata":"https://www.wikidata.org/wiki/Q420","display_name":"Biology","level":0,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1017/s0956796809007291","is_oa":true,"landing_page_url":"https://doi.org/10.1017/s0956796809007291","pdf_url":"https://www.cambridge.org/core/services/aop-cambridge-core/content/view/3FC26EB2A63E6A2B29E07B9F0D5C5BCD/S0956796809007291a.pdf/div-class-title-the-essence-of-the-span-class-sc-iterator-span-pattern-div.pdf","source":{"id":"https://openalex.org/S12266929","display_name":"Journal of Functional Programming","issn_l":"0956-7968","issn":["0956-7968","1469-7653"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310311721","host_organization_name":"Cambridge University Press","host_organization_lineage":["https://openalex.org/P4310311721","https://openalex.org/P4310311702"],"host_organization_lineage_names":["Cambridge University Press","University of Cambridge"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Journal of Functional Programming","raw_type":"journal-article"},{"id":"pmh:oai:hub.hku.hk:10722/188519","is_oa":false,"landing_page_url":"http://hdl.handle.net/10722/188519","pdf_url":null,"source":{"id":"https://openalex.org/S4377196271","display_name":"The HKU Scholars Hub (University of Hong Kong)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I889458895","host_organization_name":"University of Hong Kong","host_organization_lineage":["https://openalex.org/I889458895"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"Article"}],"best_oa_location":{"id":"doi:10.1017/s0956796809007291","is_oa":true,"landing_page_url":"https://doi.org/10.1017/s0956796809007291","pdf_url":"https://www.cambridge.org/core/services/aop-cambridge-core/content/view/3FC26EB2A63E6A2B29E07B9F0D5C5BCD/S0956796809007291a.pdf/div-class-title-the-essence-of-the-span-class-sc-iterator-span-pattern-div.pdf","source":{"id":"https://openalex.org/S12266929","display_name":"Journal of Functional Programming","issn_l":"0956-7968","issn":["0956-7968","1469-7653"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310311721","host_organization_name":"Cambridge University Press","host_organization_lineage":["https://openalex.org/P4310311721","https://openalex.org/P4310311702"],"host_organization_lineage_names":["Cambridge University Press","University of Cambridge"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Journal of Functional Programming","raw_type":"journal-article"},"sustainable_development_goals":[{"id":"https://metadata.un.org/sdg/9","score":0.6000000238418579,"display_name":"Industry, innovation and infrastructure"}],"awards":[{"id":"https://openalex.org/G3176855324","display_name":null,"funder_award_id":"EP/E02128X/1","funder_id":"https://openalex.org/F4320334627","funder_display_name":"Engineering and Physical Sciences Research Council"}],"funders":[{"id":"https://openalex.org/F4320334627","display_name":"Engineering and Physical Sciences Research Council","ror":"https://ror.org/0439y7842"}],"has_content":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2173780645.pdf","grobid_xml":"https://content.openalex.org/works/W2173780645.grobid-xml"},"referenced_works_count":53,"referenced_works":["https://openalex.org/W326743114","https://openalex.org/W954091228","https://openalex.org/W1492124994","https://openalex.org/W1536482693","https://openalex.org/W1556536463","https://openalex.org/W1563858934","https://openalex.org/W1564453741","https://openalex.org/W1604039591","https://openalex.org/W1608714802","https://openalex.org/W1609270914","https://openalex.org/W1649645444","https://openalex.org/W1732358472","https://openalex.org/W1919687110","https://openalex.org/W1964211642","https://openalex.org/W1991089831","https://openalex.org/W1994001680","https://openalex.org/W1997143185","https://openalex.org/W2009259962","https://openalex.org/W2011648260","https://openalex.org/W2044037525","https://openalex.org/W2057292961","https://openalex.org/W2058137890","https://openalex.org/W2070811535","https://openalex.org/W2078944436","https://openalex.org/W2089241138","https://openalex.org/W2103148769","https://openalex.org/W2114222087","https://openalex.org/W2116813111","https://openalex.org/W2120487396","https://openalex.org/W2124119770","https://openalex.org/W2132254891","https://openalex.org/W2136202785","https://openalex.org/W2162310108","https://openalex.org/W2166159458","https://openalex.org/W2167017930","https://openalex.org/W2167373162","https://openalex.org/W2242079500","https://openalex.org/W2485218432","https://openalex.org/W2492807847","https://openalex.org/W2601395676","https://openalex.org/W2611598995","https://openalex.org/W2621168830","https://openalex.org/W2912111500","https://openalex.org/W2913378306","https://openalex.org/W2913811625","https://openalex.org/W2968743833","https://openalex.org/W3174107850","https://openalex.org/W4239460777","https://openalex.org/W4247177360","https://openalex.org/W4285719527","https://openalex.org/W6677663948","https://openalex.org/W6683932821","https://openalex.org/W6690934218"],"related_works":["https://openalex.org/W2366394613","https://openalex.org/W2297768894","https://openalex.org/W2378076731","https://openalex.org/W3109014690","https://openalex.org/W2152421698","https://openalex.org/W2122405502","https://openalex.org/W2114254072","https://openalex.org/W2127721729","https://openalex.org/W2884798239","https://openalex.org/W1531253727"],"abstract_inverted_index":{"Abstract":[0],"The":[1],"Iterator":[2,88],"pattern":[3,23],"gives":[4],"a":[5,12,95,114],"clean":[6],"interface":[7],"for":[8,106],"element-by-element":[9],"access":[10],"to":[11],"collection,":[13],"independent":[14],"of":[15,36,42,86],"the":[16,22,74,84,87,117],"collection's":[17],"shape.":[18],"Imperative":[19],"iterations":[20],"using":[21],"have":[24],"two":[25],"simultaneous":[26],"aspects:":[27],"mapping":[28],"and":[29,54,71,81,111],"accumulating":[30],".":[31],"Various":[32],"existing":[33],"functional":[34],"models":[35],"iteration":[37],"capture":[38,83],"one":[39],"or":[40],"other":[41],"these":[43],"aspects,":[44],"but":[45],"not":[46],"both":[47],"simultaneously.":[48],"We":[49,102],"argue":[50],"that":[51,97],"C.":[52],"McBride":[53],"R.":[55],"Paterson's":[56],"applicative":[57],"functors":[58],"(Applicative":[59],"programming":[60],"with":[61,113],"effects,":[62],"J.":[63],"Funct.":[64],"Program.":[65],",":[66],"18":[67],"(1):":[68],"1\u201313,":[69],"2008),":[70],"in":[72,94],"particular":[73],"corresponding":[75],"traverse":[76],"operator,":[77],"do":[78,92],"exactly":[79],"this,":[80],"therefore":[82],"essence":[85],"pattern.":[89],"Moreover,":[90],"they":[91],"so":[93],"way":[96],"nicely":[98],"supports":[99],"modular":[100],"programming.":[101],"present":[103],"some":[104],"axioms":[105],"traversal,":[107],"discuss":[108],"modularity":[109],"concerns":[110],"illustrate":[112],"simple":[115],"example,":[116],"wordcount":[118],"problem.":[119]},"counts_by_year":[{"year":2024,"cited_by_count":1},{"year":2023,"cited_by_count":2},{"year":2022,"cited_by_count":3},{"year":2021,"cited_by_count":3},{"year":2020,"cited_by_count":1},{"year":2019,"cited_by_count":2},{"year":2018,"cited_by_count":6},{"year":2017,"cited_by_count":1},{"year":2016,"cited_by_count":4},{"year":2015,"cited_by_count":4},{"year":2013,"cited_by_count":5},{"year":2012,"cited_by_count":9}],"updated_date":"2026-05-27T06:14:07.914337","created_date":"2025-10-10T00:00:00"}
