{"id":"https://openalex.org/W1979005025","doi":"https://doi.org/10.1145/1292535.1292548","title":"Practical generic programming in OCaml","display_name":"Practical generic programming in OCaml","publication_year":2007,"publication_date":"2007-10-02","ids":{"openalex":"https://openalex.org/W1979005025","doi":"https://doi.org/10.1145/1292535.1292548","mag":"1979005025"},"language":"en","primary_location":{"id":"doi:10.1145/1292535.1292548","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1292535.1292548","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2007 workshop on Workshop on ML","raw_type":"proceedings-article"},"type":"article","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/A5020576379","display_name":"Jeremy Yallop","orcid":"https://orcid.org/0009-0002-1650-6340"},"institutions":[{"id":"https://openalex.org/I98677209","display_name":"University of Edinburgh","ror":"https://ror.org/01nrxwf90","country_code":"GB","type":"education","lineage":["https://openalex.org/I98677209"]}],"countries":["GB"],"is_corresponding":true,"raw_author_name":"Jeremy Yallop","raw_affiliation_strings":["LFCS: University of Edinburgh, Edinburgh, United Kngdm","LFCS: University of Edinburgh, Edinburgh, United Kngdm#TAB#"],"affiliations":[{"raw_affiliation_string":"LFCS: University of Edinburgh, Edinburgh, United Kngdm","institution_ids":["https://openalex.org/I98677209"]},{"raw_affiliation_string":"LFCS: University of Edinburgh, Edinburgh, United Kngdm#TAB#","institution_ids":["https://openalex.org/I98677209"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":["https://openalex.org/A5020576379"],"corresponding_institution_ids":["https://openalex.org/I98677209"],"apc_list":null,"apc_paid":null,"fwci":4.2232,"has_fulltext":false,"cited_by_count":21,"citation_normalized_percentile":{"value":0.93881441,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":89,"max":97},"biblio":{"volume":null,"issue":null,"first_page":"83","last_page":"94"},"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.9987999796867371,"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.9987999796867371,"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/T10260","display_name":"Software Engineering Research","score":0.9987000226974487,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"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/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9919000267982483,"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.8779846429824829},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7493167519569397},{"id":"https://openalex.org/keywords/boilerplate-text","display_name":"Boilerplate text","score":0.6953848600387573},{"id":"https://openalex.org/keywords/generic-programming","display_name":"Generic programming","score":0.5949797034263611},{"id":"https://openalex.org/keywords/preprocessor","display_name":"Preprocessor","score":0.5707472562789917},{"id":"https://openalex.org/keywords/implementation","display_name":"Implementation","score":0.5627731084823608},{"id":"https://openalex.org/keywords/bytecode","display_name":"Bytecode","score":0.5139607787132263},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.5000693798065186},{"id":"https://openalex.org/keywords/combinatory-logic","display_name":"Combinatory logic","score":0.47013339400291443},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.4595555067062378},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.43970412015914917},{"id":"https://openalex.org/keywords/code-generation","display_name":"Code generation","score":0.42440104484558105},{"id":"https://openalex.org/keywords/source-lines-of-code","display_name":"Source lines of code","score":0.4134463965892792},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.4032723903656006},{"id":"https://openalex.org/keywords/key","display_name":"Key (lock)","score":0.19567784667015076},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.19420045614242554},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.16205883026123047},{"id":"https://openalex.org/keywords/software","display_name":"Software","score":0.14590203762054443}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8779846429824829},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7493167519569397},{"id":"https://openalex.org/C75701414","wikidata":"https://www.wikidata.org/wiki/Q1651672","display_name":"Boilerplate text","level":2,"score":0.6953848600387573},{"id":"https://openalex.org/C7051814","wikidata":"https://www.wikidata.org/wiki/Q1051282","display_name":"Generic programming","level":2,"score":0.5949797034263611},{"id":"https://openalex.org/C34736171","wikidata":"https://www.wikidata.org/wiki/Q918333","display_name":"Preprocessor","level":2,"score":0.5707472562789917},{"id":"https://openalex.org/C26713055","wikidata":"https://www.wikidata.org/wiki/Q245962","display_name":"Implementation","level":2,"score":0.5627731084823608},{"id":"https://openalex.org/C2779818221","wikidata":"https://www.wikidata.org/wiki/Q837330","display_name":"Bytecode","level":3,"score":0.5139607787132263},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.5000693798065186},{"id":"https://openalex.org/C79678938","wikidata":"https://www.wikidata.org/wiki/Q1481571","display_name":"Combinatory logic","level":2,"score":0.47013339400291443},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.4595555067062378},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.43970412015914917},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.42440104484558105},{"id":"https://openalex.org/C199519371","wikidata":"https://www.wikidata.org/wiki/Q942695","display_name":"Source lines of code","level":3,"score":0.4134463965892792},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.4032723903656006},{"id":"https://openalex.org/C26517878","wikidata":"https://www.wikidata.org/wiki/Q228039","display_name":"Key (lock)","level":2,"score":0.19567784667015076},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.19420045614242554},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.16205883026123047},{"id":"https://openalex.org/C2777904410","wikidata":"https://www.wikidata.org/wiki/Q7397","display_name":"Software","level":2,"score":0.14590203762054443},{"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":1,"locations":[{"id":"doi:10.1145/1292535.1292548","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1292535.1292548","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2007 workshop on Workshop on ML","raw_type":"proceedings-article"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":29,"referenced_works":["https://openalex.org/W975212003","https://openalex.org/W1517976144","https://openalex.org/W1522251113","https://openalex.org/W1537703524","https://openalex.org/W1783388813","https://openalex.org/W1927794125","https://openalex.org/W1947395352","https://openalex.org/W1987073254","https://openalex.org/W2005130481","https://openalex.org/W2031419217","https://openalex.org/W2037984920","https://openalex.org/W2042485525","https://openalex.org/W2058137890","https://openalex.org/W2089241138","https://openalex.org/W2093896470","https://openalex.org/W2100703235","https://openalex.org/W2119629818","https://openalex.org/W2120487396","https://openalex.org/W2136177623","https://openalex.org/W2136327713","https://openalex.org/W2151275061","https://openalex.org/W2626581960","https://openalex.org/W2785690991","https://openalex.org/W2987803397","https://openalex.org/W4237270226","https://openalex.org/W4254510965","https://openalex.org/W4386206620","https://openalex.org/W6658346312","https://openalex.org/W6680131817"],"related_works":["https://openalex.org/W2046671194","https://openalex.org/W4250126356","https://openalex.org/W2277916875","https://openalex.org/W1600870257","https://openalex.org/W2517735682","https://openalex.org/W2163101388","https://openalex.org/W2162766176","https://openalex.org/W2951199257","https://openalex.org/W1947395352","https://openalex.org/W2794670436"],"abstract_inverted_index":{"We":[0,18],"describe":[1],"deriving,":[2],"a":[3,13,29,43,61,95],"system":[4,44],"of":[5,53,98],"extensible":[6],"generic":[7,69],"functions":[8,70],"for":[9],"OCaml":[10],"implemented":[11],"as":[12,34],"preprocessor":[14],"and":[15,55],"supporting":[16],"library.":[17],"argue":[19],"that":[20,45],"generating":[21],"code":[22],"from":[23],"type-definitions":[24],"has":[25,50],"significant":[26],"advantages":[27],"over":[28],"combinator":[30],"approach,":[31],"taking":[32],"serialisation":[33,89,99],"an":[35],"example":[36],"application:":[37],"our":[38],"generate-your-boilerplate":[39],"design":[40],"results":[41],"in":[42,87],"is":[46],"easy":[47],"to":[48,83],"use,":[49],"comprehensive":[51],"coverage":[52],"types":[54],"handles":[56],"cyclic":[57],"values":[58],"without":[59,91],"imposing":[60],"burden":[62],"on":[63],"the":[64,88,92],"user.":[65],"Users":[66],"can":[67,81],"extend":[68],"with":[71],"specialised":[72],"implementations":[73],"at":[74],"particular":[75],"types;":[76],"we":[77],"show":[78],"how":[79],"this":[80],"lead":[82],"dramatically":[84],"improved":[85],"performance":[86],"task":[90],"user":[93],"writing":[94],"single":[96],"line":[97],"code.":[100]},"counts_by_year":[{"year":2022,"cited_by_count":1},{"year":2021,"cited_by_count":1},{"year":2019,"cited_by_count":1},{"year":2018,"cited_by_count":3},{"year":2017,"cited_by_count":1},{"year":2015,"cited_by_count":1},{"year":2012,"cited_by_count":2}],"updated_date":"2025-11-06T03:46:38.306776","created_date":"2025-10-10T00:00:00"}
