{"id":"https://openalex.org/W1557359516","doi":"https://doi.org/10.1145/1159861.1159863","title":"Design patterns as higher-order datatype-generic programs","display_name":"Design patterns as higher-order datatype-generic programs","publication_year":2006,"publication_date":"2006-09-16","ids":{"openalex":"https://openalex.org/W1557359516","doi":"https://doi.org/10.1145/1159861.1159863","mag":"1557359516"},"language":"en","primary_location":{"id":"doi:10.1145/1159861.1159863","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1159861.1159863","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming","raw_type":"proceedings-article"},"type":"conference-paper","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"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":true,"raw_author_name":"Jeremy Gibbons","raw_affiliation_strings":["Oxford University Computing Laboratory","Oxford University computing laboratory"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Oxford University Computing Laboratory","institution_ids":["https://openalex.org/I40120149"]},{"raw_affiliation_string":"Oxford University computing laboratory","institution_ids":["https://openalex.org/I40120149"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":["https://openalex.org/A5086558126"],"corresponding_institution_ids":["https://openalex.org/I40120149"],"apc_list":null,"apc_paid":null,"fwci":0.2443,"has_fulltext":false,"cited_by_count":1,"citation_normalized_percentile":{"value":0.43503177,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":"41","issue":null,"first_page":"1","last_page":"12"},"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.9995999932289124,"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.9995999932289124,"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/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.9993000030517578,"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/T11450","display_name":"Model-Driven Software Engineering Techniques","score":0.9990000128746033,"subfield":{"id":"https://openalex.org/subfields/1712","display_name":"Software"},"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.8115259408950806},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7200872898101807},{"id":"https://openalex.org/keywords/software-design-pattern","display_name":"Software design pattern","score":0.6294854879379272},{"id":"https://openalex.org/keywords/suite","display_name":"Suite","score":0.6111143231391907},{"id":"https://openalex.org/keywords/design-pattern","display_name":"Design pattern","score":0.5104324221611023},{"id":"https://openalex.org/keywords/order","display_name":"Order (exchange)","score":0.4688146114349365},{"id":"https://openalex.org/keywords/comparison-of-multi-paradigm-programming-languages","display_name":"Comparison of multi-paradigm programming languages","score":0.4552404582500458},{"id":"https://openalex.org/keywords/second-generation-programming-language","display_name":"Second-generation programming language","score":0.448355495929718},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.4274732768535614},{"id":"https://openalex.org/keywords/object-oriented-programming","display_name":"Object-oriented programming","score":0.4139740467071533},{"id":"https://openalex.org/keywords/object","display_name":"Object (grammar)","score":0.4103360176086426},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.37715548276901245},{"id":"https://openalex.org/keywords/software-engineering","display_name":"Software engineering","score":0.33798089623451233},{"id":"https://openalex.org/keywords/programming-paradigm","display_name":"Programming paradigm","score":0.29829171299934387},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.20726782083511353},{"id":"https://openalex.org/keywords/fifth-generation-programming-language","display_name":"Fifth-generation programming language","score":0.13776782155036926}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8115259408950806},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7200872898101807},{"id":"https://openalex.org/C146054899","wikidata":"https://www.wikidata.org/wiki/Q181156","display_name":"Software design pattern","level":3,"score":0.6294854879379272},{"id":"https://openalex.org/C79581498","wikidata":"https://www.wikidata.org/wiki/Q1367530","display_name":"Suite","level":2,"score":0.6111143231391907},{"id":"https://openalex.org/C14501506","wikidata":"https://www.wikidata.org/wiki/Q5253831","display_name":"Design pattern","level":2,"score":0.5104324221611023},{"id":"https://openalex.org/C182306322","wikidata":"https://www.wikidata.org/wiki/Q1779371","display_name":"Order (exchange)","level":2,"score":0.4688146114349365},{"id":"https://openalex.org/C74149592","wikidata":"https://www.wikidata.org/wiki/Q762446","display_name":"Comparison of multi-paradigm programming languages","level":5,"score":0.4552404582500458},{"id":"https://openalex.org/C11164408","wikidata":"https://www.wikidata.org/wiki/Q18657800","display_name":"Second-generation programming language","level":4,"score":0.448355495929718},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.4274732768535614},{"id":"https://openalex.org/C73752529","wikidata":"https://www.wikidata.org/wiki/Q79872","display_name":"Object-oriented programming","level":2,"score":0.4139740467071533},{"id":"https://openalex.org/C2781238097","wikidata":"https://www.wikidata.org/wiki/Q175026","display_name":"Object (grammar)","level":2,"score":0.4103360176086426},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.37715548276901245},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.33798089623451233},{"id":"https://openalex.org/C34165917","wikidata":"https://www.wikidata.org/wiki/Q188267","display_name":"Programming paradigm","level":2,"score":0.29829171299934387},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.20726782083511353},{"id":"https://openalex.org/C199305712","wikidata":"https://www.wikidata.org/wiki/Q3205914","display_name":"Fifth-generation programming language","level":3,"score":0.13776782155036926},{"id":"https://openalex.org/C10138342","wikidata":"https://www.wikidata.org/wiki/Q43015","display_name":"Finance","level":1,"score":0.0},{"id":"https://openalex.org/C166957645","wikidata":"https://www.wikidata.org/wiki/Q23498","display_name":"Archaeology","level":1,"score":0.0},{"id":"https://openalex.org/C95457728","wikidata":"https://www.wikidata.org/wiki/Q309","display_name":"History","level":0,"score":0.0},{"id":"https://openalex.org/C162324750","wikidata":"https://www.wikidata.org/wiki/Q8134","display_name":"Economics","level":0,"score":0.0},{"id":"https://openalex.org/C177264268","wikidata":"https://www.wikidata.org/wiki/Q1514741","display_name":"Set (abstract data type)","level":2,"score":0.0}],"mesh":[],"locations_count":10,"locations":[{"id":"doi:10.1145/1159861.1159863","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1159861.1159863","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming","raw_type":"proceedings-article"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.134.9420","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.134.9420","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://eecs.harvard.edu/~nr/cs252r/archive/jeremy-gibbons/hodgp.pdf","raw_type":"text"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.259.2416","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.259.2416","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://www.comlab.ox.ac.uk/jeremy.gibbons/publications/hodgp-journal.pdf","raw_type":"text"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.60.5251","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.60.5251","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://web.comlab.ox.ac.uk/oucl/work/jeremy.gibbons/publications/hodgp.pdf","raw_type":"text"},{"id":"pmh:oai:ora.ox.ac.uk:uuid:07a0e645-6f3e-4626-a0de-f267be57821c","is_oa":false,"landing_page_url":"https://ora.ox.ac.uk/objects/uuid:07a0e645-6f3e-4626-a0de-f267be57821c","pdf_url":null,"source":{"id":"https://openalex.org/S4306402636","display_name":"Oxford University Research Archive (ORA) (University of Oxford)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I40120149","host_organization_name":"University of Oxford","host_organization_lineage":["https://openalex.org/I40120149"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Symplectic Elements at Oxford","raw_type":"Conference"},{"id":"pmh:oai:ora.ox.ac.uk:uuid:7f87c1b0-0ae4-46ba-aa97-bd2070118e1e","is_oa":false,"landing_page_url":"https://ora.ox.ac.uk/objects/uuid:7f87c1b0-0ae4-46ba-aa97-bd2070118e1e","pdf_url":null,"source":{"id":"https://openalex.org/S4306402636","display_name":"Oxford University Research Archive (ORA) (University of Oxford)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I40120149","host_organization_name":"University of Oxford","host_organization_lineage":["https://openalex.org/I40120149"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Department of Computer Science","raw_type":"Journal article"},{"id":"pmh:oai:ora.ox.ac.uk:uuid:d51f7d43-a922-44a7-9398-18d6af894b21","is_oa":false,"landing_page_url":"https://ora.ox.ac.uk/objects/uuid:d51f7d43-a922-44a7-9398-18d6af894b21","pdf_url":null,"source":{"id":"https://openalex.org/S4306402636","display_name":"Oxford University Research Archive (ORA) (University of Oxford)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I40120149","host_organization_name":"University of Oxford","host_organization_lineage":["https://openalex.org/I40120149"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Department of Computer Science","raw_type":"Conference item"},{"id":"pmh:oai:ora.ox.ac.uk:uuid:ddf6e489-9241-4cac-8af0-eb691b9adb73","is_oa":false,"landing_page_url":"https://ora.ox.ac.uk/objects/uuid:ddf6e489-9241-4cac-8af0-eb691b9adb73","pdf_url":null,"source":{"id":"https://openalex.org/S4306402636","display_name":"Oxford University Research Archive (ORA) (University of Oxford)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I40120149","host_organization_name":"University of Oxford","host_organization_lineage":["https://openalex.org/I40120149"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Department of Computer Science","raw_type":"Conference item"},{"id":"pmh:oai:ora.ox.ac.uk:uuid:f6f485ff-7f78-4db6-b729-d9d9842a58b7","is_oa":false,"landing_page_url":"https://ora.ox.ac.uk/objects/uuid:f6f485ff-7f78-4db6-b729-d9d9842a58b7","pdf_url":null,"source":{"id":"https://openalex.org/S4306402636","display_name":"Oxford University Research Archive (ORA) (University of Oxford)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I40120149","host_organization_name":"University of Oxford","host_organization_lineage":["https://openalex.org/I40120149"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"Department of Computer Science","raw_type":"Conference item"},{"id":"mag:1557359516","is_oa":false,"landing_page_url":null,"pdf_url":null,"source":null,"license":null,"license_id":null,"version":null,"is_accepted":false,"is_published":null,"raw_source_name":null,"raw_type":null}],"best_oa_location":null,"sustainable_development_goals":[{"score":0.7699999809265137,"display_name":"Quality Education","id":"https://metadata.un.org/sdg/4"}],"awards":[],"funders":[],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":42,"referenced_works":["https://openalex.org/W204886091","https://openalex.org/W1484366641","https://openalex.org/W1526260980","https://openalex.org/W1556536463","https://openalex.org/W1563858934","https://openalex.org/W1608714802","https://openalex.org/W1649645444","https://openalex.org/W1768450951","https://openalex.org/W1796676969","https://openalex.org/W1829244603","https://openalex.org/W1963928257","https://openalex.org/W1964211642","https://openalex.org/W1966981171","https://openalex.org/W1998875295","https://openalex.org/W2009259962","https://openalex.org/W2057292961","https://openalex.org/W2058137890","https://openalex.org/W2089241138","https://openalex.org/W2101565274","https://openalex.org/W2111230669","https://openalex.org/W2111609583","https://openalex.org/W2116616150","https://openalex.org/W2116813111","https://openalex.org/W2116908067","https://openalex.org/W2118729638","https://openalex.org/W2120487396","https://openalex.org/W2135642511","https://openalex.org/W2136177623","https://openalex.org/W2137236134","https://openalex.org/W2143238865","https://openalex.org/W2143973850","https://openalex.org/W2154148405","https://openalex.org/W2166159458","https://openalex.org/W2173780645","https://openalex.org/W2175912519","https://openalex.org/W2208923056","https://openalex.org/W2621168830","https://openalex.org/W2798277317","https://openalex.org/W2804983060","https://openalex.org/W2911433283","https://openalex.org/W4248352158","https://openalex.org/W4254691308"],"related_works":["https://openalex.org/W2120487396","https://openalex.org/W1768450951","https://openalex.org/W2137236134","https://openalex.org/W1489921942","https://openalex.org/W3140687576","https://openalex.org/W74373509","https://openalex.org/W2006038118","https://openalex.org/W1970404787","https://openalex.org/W2761840367","https://openalex.org/W1964211642","https://openalex.org/W1505808374","https://openalex.org/W2301545550","https://openalex.org/W1966385085","https://openalex.org/W2080172410","https://openalex.org/W2903357517","https://openalex.org/W2497013456","https://openalex.org/W61987557","https://openalex.org/W2560089524","https://openalex.org/W2151344230","https://openalex.org/W190721557"],"abstract_inverted_index":{"Design":[0],"patterns":[1,34,58],"are":[2,85,92],"reusable":[3,63],"abstractions":[4],"in":[5,32,43,51],"object-oriented":[6],"software.":[7],"However,":[8],"using":[9],"current":[10],"programming":[11],"languages,":[12],"these":[13,90],"elements":[14],"can":[15],"only":[16],"be":[17,60],"expressed":[18],"extra-linguistically:":[19],"as":[20,62],"prose,":[21],"pictures,":[22],"and":[23,87],"prototypes.":[24],"We":[25,48,98],"believe":[26],"that":[27,69],"this":[28],"is":[29,78],"not":[30,79],"inherent":[31],"the":[33,44,52,55,70,76,100],"themselves,":[35],"but":[36],"evidence":[37],"of":[38,41,46,54,72,113],"a":[39,109],"lack":[40],"expressivity":[42],"languages":[45,53,71],"today.":[47],"expect":[49],"that,":[50],"future,":[56],"design":[57],"will":[59,74],"expressible":[61],"library":[64],"code.":[65],"Indeed,":[66],"we":[67],"claim":[68],"tomorrow":[73],"suffice;":[75],"future":[77],"far":[80],"away.":[81],"The":[82],"necessary":[83],"features":[84,91],"higher-order":[86,104],"datatypegeneric":[88,105],"constructs;":[89],"already":[93],"or":[94],"nearly":[95],"available":[96],"now.":[97],"argue":[99],"case":[101],"by":[102],"presenting":[103],"programs":[106],"capturing":[107],"ORIGAMI,":[108],"small":[110],"pattern":[111],"language":[112],"recursive":[114],"data":[115],"structures.":[116]},"counts_by_year":[],"updated_date":"2026-07-29T14:22:42.915294","created_date":"2025-10-10T00:00:00"}
