{"id":"https://openalex.org/W206809417","doi":"https://doi.org/10.1017/s0956796810000171","title":"Scala for generic programmers","display_name":"Scala for generic programmers","publication_year":2010,"publication_date":"2010-07-01","ids":{"openalex":"https://openalex.org/W206809417","doi":"https://doi.org/10.1017/s0956796810000171","mag":"206809417"},"language":"en","primary_location":{"id":"doi:10.1017/s0956796810000171","is_oa":true,"landing_page_url":"https://doi.org/10.1017/s0956796810000171","pdf_url":"https://www.cambridge.org/core/services/aop-cambridge-core/content/view/223EB37E77EA36B27AE33A644DA70926/S0956796810000171a.pdf/div-class-title-scala-for-generic-programmers-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/223EB37E77EA36B27AE33A644DA70926/S0956796810000171a.pdf/div-class-title-scala-for-generic-programmers-div.pdf","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","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/I139264467","display_name":"Seoul National University","ror":"https://ror.org/04h9pn542","country_code":"KR","type":"education","lineage":["https://openalex.org/I139264467"]}],"countries":["KR"],"is_corresponding":false,"raw_author_name":"BRUNO C. D. S. OLIVEIRA","raw_affiliation_strings":["ROSAEC Center, Seoul National University, 599 Gwanak-ro, Gwanak-gu, Seoul 151-744, South Korea (e-mail:","Rosaec center, seoul national university, 599 gwanak-ro, gwanak-gu, seoul 151-744, south korea (e-mail: bruno@ropas.snu.ac.kr)#TAB#"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"ROSAEC Center, Seoul National University, 599 Gwanak-ro, Gwanak-gu, Seoul 151-744, South Korea (e-mail:","institution_ids":["https://openalex.org/I139264467"]},{"raw_affiliation_string":"Rosaec center, seoul national university, 599 gwanak-ro, gwanak-gu, seoul 151-744, south korea (e-mail: bruno@ropas.snu.ac.kr)#TAB#","institution_ids":["https://openalex.org/I139264467"]}]},{"author_position":"last","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:","Oxford university computing laboratory, wolfson building, parks road, oxford ox1 3qd, uk (e-mail: jg@comlab.ox.ac.uk)"],"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"]},{"raw_affiliation_string":"Oxford university computing laboratory, wolfson building, parks road, oxford ox1 3qd, uk (e-mail: jg@comlab.ox.ac.uk)","institution_ids":["https://openalex.org/I40120149"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":2,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":1.3776,"has_fulltext":true,"cited_by_count":9,"citation_normalized_percentile":{"value":0.83464976,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":97},"biblio":{"volume":"20","issue":"3-4","first_page":"303","last_page":"352"},"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.9991000294685364,"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.9991000294685364,"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.9514999985694885,"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/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9455999732017517,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"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/scala","display_name":"Scala","score":0.9770970344543457},{"id":"https://openalex.org/keywords/haskell","display_name":"Haskell","score":0.8859460949897766},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8548426628112793},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.8080183863639832},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.6788203120231628},{"id":"https://openalex.org/keywords/inheritance","display_name":"Inheritance (genetic algorithm)","score":0.572780191898346},{"id":"https://openalex.org/keywords/type-safety","display_name":"Type safety","score":0.5388292074203491},{"id":"https://openalex.org/keywords/generic-programming","display_name":"Generic programming","score":0.5180730819702148},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.34731507301330566},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.27919989824295044}],"concepts":[{"id":"https://openalex.org/C109701466","wikidata":"https://www.wikidata.org/wiki/Q460584","display_name":"Scala","level":3,"score":0.9770970344543457},{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.8859460949897766},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8548426628112793},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.8080183863639832},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.6788203120231628},{"id":"https://openalex.org/C2780902518","wikidata":"https://www.wikidata.org/wiki/Q6033780","display_name":"Inheritance (genetic algorithm)","level":3,"score":0.572780191898346},{"id":"https://openalex.org/C44779574","wikidata":"https://www.wikidata.org/wiki/Q736866","display_name":"Type safety","level":2,"score":0.5388292074203491},{"id":"https://openalex.org/C7051814","wikidata":"https://www.wikidata.org/wiki/Q1051282","display_name":"Generic programming","level":2,"score":0.5180730819702148},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.34731507301330566},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.27919989824295044},{"id":"https://openalex.org/C55493867","wikidata":"https://www.wikidata.org/wiki/Q7094","display_name":"Biochemistry","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/C185592680","wikidata":"https://www.wikidata.org/wiki/Q2329","display_name":"Chemistry","level":0,"score":0.0}],"mesh":[],"locations_count":7,"locations":[{"id":"doi:10.1017/s0956796810000171","is_oa":true,"landing_page_url":"https://doi.org/10.1017/s0956796810000171","pdf_url":"https://www.cambridge.org/core/services/aop-cambridge-core/content/view/223EB37E77EA36B27AE33A644DA70926/S0956796810000171a.pdf/div-class-title-scala-for-generic-programmers-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:CiteSeerX.psu:10.1.1.205.2364","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.205.2364","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://ropas.snu.ac.kr/%7Ebruno/papers/ScalaGenericWGP.pdf","raw_type":"text"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.205.3366","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.205.3366","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/scalagp.pdf","raw_type":"text"},{"id":"pmh:oai:hub.hku.hk:10722/188520","is_oa":false,"landing_page_url":"http://hdl.handle.net/10722/188520","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"},{"id":"pmh:oai:ora.ox.ac.uk:uuid:6ba748b9-73a8-44a2-b30a-2e3156bc090b","is_oa":false,"landing_page_url":"https://ora.ox.ac.uk/objects/uuid:6ba748b9-73a8-44a2-b30a-2e3156bc090b","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:a6cf9fbf-a3ce-4914-854e-2731f64e895b","is_oa":false,"landing_page_url":"https://ora.ox.ac.uk/objects/uuid:a6cf9fbf-a3ce-4914-854e-2731f64e895b","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:e36928ae-ec6c-4b7d-8f2d-a93bf60273a6","is_oa":false,"landing_page_url":"https://ora.ox.ac.uk/objects/uuid:e36928ae-ec6c-4b7d-8f2d-a93bf60273a6","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"}],"best_oa_location":{"id":"doi:10.1017/s0956796810000171","is_oa":true,"landing_page_url":"https://doi.org/10.1017/s0956796810000171","pdf_url":"https://www.cambridge.org/core/services/aop-cambridge-core/content/view/223EB37E77EA36B27AE33A644DA70926/S0956796810000171a.pdf/div-class-title-scala-for-generic-programmers-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":[],"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"},{"id":"https://openalex.org/G949391715","display_name":null,"funder_award_id":"R11-2008-007-01002-0","funder_id":"https://openalex.org/F4320322349","funder_display_name":"Ministry of Education, Science and Technology"}],"funders":[{"id":"https://openalex.org/F4320320290","display_name":"University of Oxford","ror":"https://ror.org/052gg0110"},{"id":"https://openalex.org/F4320322348","display_name":"Korea Science and Engineering Foundation","ror":"https://ror.org/013aysd81"},{"id":"https://openalex.org/F4320322349","display_name":"Ministry of Education, Science and Technology","ror":"https://ror.org/01p262204"},{"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/W206809417.pdf","grobid_xml":"https://content.openalex.org/works/W206809417.grobid-xml"},"referenced_works_count":64,"referenced_works":["https://openalex.org/W17008436","https://openalex.org/W138078219","https://openalex.org/W202283534","https://openalex.org/W204886091","https://openalex.org/W205696660","https://openalex.org/W589645244","https://openalex.org/W1480731572","https://openalex.org/W1495226832","https://openalex.org/W1501408037","https://openalex.org/W1506921086","https://openalex.org/W1525643703","https://openalex.org/W1548394473","https://openalex.org/W1552977104","https://openalex.org/W1563858934","https://openalex.org/W1594466563","https://openalex.org/W1608714802","https://openalex.org/W1649645444","https://openalex.org/W1897069414","https://openalex.org/W1919687110","https://openalex.org/W1947395352","https://openalex.org/W1964211642","https://openalex.org/W1979982425","https://openalex.org/W1985088747","https://openalex.org/W1987454317","https://openalex.org/W1997044756","https://openalex.org/W2005130481","https://openalex.org/W2009775190","https://openalex.org/W2026323010","https://openalex.org/W2032220227","https://openalex.org/W2048569219","https://openalex.org/W2052358159","https://openalex.org/W2082765113","https://openalex.org/W2084686108","https://openalex.org/W2093896470","https://openalex.org/W2095136535","https://openalex.org/W2095625219","https://openalex.org/W2110122404","https://openalex.org/W2110317952","https://openalex.org/W2116813111","https://openalex.org/W2118729638","https://openalex.org/W2120132421","https://openalex.org/W2120487396","https://openalex.org/W2124119770","https://openalex.org/W2131828631","https://openalex.org/W2134281169","https://openalex.org/W2135642511","https://openalex.org/W2136177623","https://openalex.org/W2136202785","https://openalex.org/W2137236134","https://openalex.org/W2140647971","https://openalex.org/W2144470103","https://openalex.org/W2144541538","https://openalex.org/W2145945984","https://openalex.org/W2146069884","https://openalex.org/W2150101804","https://openalex.org/W2156426055","https://openalex.org/W2173780645","https://openalex.org/W2244800645","https://openalex.org/W2806822774","https://openalex.org/W3141297582","https://openalex.org/W4239460777","https://openalex.org/W4244792373","https://openalex.org/W4285719527","https://openalex.org/W6641433507"],"related_works":["https://openalex.org/W2004997206","https://openalex.org/W4252522690","https://openalex.org/W4237116038","https://openalex.org/W1564538666","https://openalex.org/W2526970984","https://openalex.org/W4297910919","https://openalex.org/W2017112188","https://openalex.org/W206809417","https://openalex.org/W3006157134","https://openalex.org/W1975664374"],"abstract_inverted_index":{"Abstract":[0],"Datatype-generic":[1],"programming":[2,32,63],"(DGP)":[3],"involves":[4],"parametrization":[5],"of":[6,11,16,58,86,102,126,153],"programs":[7],"by":[8,133],"the":[9,14,40,60,82,100,116,172,177],"shape":[10],"data,":[12],"in":[13,29,46,99,113,124,138,149,166],"form":[15,101],"type":[17,72],"constructors":[18],"such":[19,34],"as":[20,35,66,90],"\u2018list":[21],"of\u2019.":[22],"Most":[23],"approaches":[24,137,148,170],"to":[25,164],"DGP":[26,108,169],"are":[27],"developed":[28],"pure":[30],"functional":[31,41,62],"languages":[33,88],"Haskell.":[36],"We":[37,130],"argue":[38],"that":[39],"object-oriented":[42,87],"language":[43],"Scala":[44,55,150,167],"is":[45],"many":[47],"ways":[48],"a":[49],"better":[50],"choice.":[51],"Not":[52],"only":[53],"does":[54],"provide":[56],"equivalents":[57],"all":[59],"necessary":[61],"features":[64,85],"(such":[65,89],"parametric":[67],"polymorphism,":[68],"higher-order":[69],"functions,":[70],"higher-kinded":[71],"operations,":[73],"and":[74,76,96,128,144,180,188],"type-":[75],"constructor-classes),":[77],"but":[78],"it":[79],"also":[80],"provides":[81,119],"most":[83],"useful":[84],"subtyping,":[91],"overriding,":[92],"traditional":[93],"single":[94],"inheritance,":[95],"multiple":[97],"inheritance":[98],"traits).":[103],"Common":[104],"Haskell":[105],"techniques":[106],"for":[107,176],"can":[109],"be":[110],"conveniently":[111],"replicated":[112],"Scala,":[114],"whereas":[115],"extra":[117],"expressivity":[118],"some":[120,152],"important":[121],"additional":[122],"benefits":[123],"terms":[125],"extensibility":[127],"reuse.":[129],"illustrate":[131],"this":[132],"comparing":[134],"two":[135],"simple":[136],"Haskell,":[139],"pointing":[140],"out":[141],"their":[142],"limitations":[143],"showing":[145],"how":[146,163],"equivalent":[147],"address":[151],"these":[154],"limitations.":[155],"Finally,":[156],"we":[157],"present":[158],"three":[159],"case":[160],"studies":[161],"on":[162],"implement":[165],"real":[168],"from":[171],"literature:":[173],"Hinze's":[174],"\u2018Generics":[175],"Masses\u2019,":[178],"L\u00e4mmel":[179],"Peyton":[181],"Jones's":[182],"\u2018Scrap":[183],"your":[184],"Boilerplate":[185],"with":[186],"Class\u2019,":[187],"Gibbons's":[189],"\u2018Origami":[190],"Programming\u2019.":[191]},"counts_by_year":[{"year":2019,"cited_by_count":1},{"year":2017,"cited_by_count":1},{"year":2016,"cited_by_count":3},{"year":2014,"cited_by_count":1},{"year":2012,"cited_by_count":3}],"updated_date":"2026-05-27T06:14:07.914337","created_date":"2025-10-10T00:00:00"}
