{"id":"https://openalex.org/W2157155332","doi":"https://doi.org/10.1145/1159861.1159867","title":"Good advice for type-directed programming aspect-oriented programming and extensible generic functions","display_name":"Good advice for type-directed programming aspect-oriented programming and extensible generic functions","publication_year":2006,"publication_date":"2006-09-16","ids":{"openalex":"https://openalex.org/W2157155332","doi":"https://doi.org/10.1145/1159861.1159867","mag":"2157155332"},"language":"en","primary_location":{"id":"doi:10.1145/1159861.1159867","doi":"https://doi.org/10.1145/1159861.1159867","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1159861.1159867","pdf_url":null,"source":{"id":"https://openalex.org/S4306421243","display_name":"Workshop on Generic Programming","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"listed_in":[],"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"conference"},"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"},"volume":null,"type":"conference-paper","is_traditional":true,"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/A5032324538","display_name":"Geoffrey Washburn","orcid":null,"observed_orcids":[]},"institutions":[{"id":"https://openalex.org/I79576946","display_name":"University of Pennsylvania","ror":"https://ror.org/00b30xv10","country_code":"US","type":"education","lineage":["https://openalex.org/I79576946"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Geoffrey Washburn","raw_affiliation_strings":["University of Pennsylvania"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Pennsylvania","institution_ids":["https://openalex.org/I79576946"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5049220962","display_name":"Stephanie Weirich","orcid":"https://orcid.org/0000-0002-6756-9168","observed_orcids":["https://orcid.org/0000-0002-6756-9168"]},"institutions":[{"id":"https://openalex.org/I79576946","display_name":"University of Pennsylvania","ror":"https://ror.org/00b30xv10","country_code":"US","type":"education","lineage":["https://openalex.org/I79576946"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Stephanie Weirich","raw_affiliation_strings":["University of Pennsylvania"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Pennsylvania","institution_ids":["https://openalex.org/I79576946"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I79576946"],"apc_list":null,"apc_paid":null,"fwci":1.0656,"has_fulltext":false,"cited_by_count":11,"citation_normalized_percentile":{"value":0.72440945,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":88,"max":93},"biblio":{"volume":null,"issue":null,"first_page":"33","last_page":"44"},"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.9643999934196472,"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"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9643999934196472,"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"}},{"id":"https://openalex.org/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.03370000049471855,"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"}},{"id":"https://openalex.org/T11450","display_name":"Model-Driven Software Engineering Techniques","score":0.0003000000142492354,"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/aspect-oriented-programming","display_name":"aspect-oriented programming","score":0.9860000014305115},{"id":"https://openalex.org/keywords/type-classes","display_name":"type classes","score":0.7440000176429749},{"id":"https://openalex.org/keywords/algebraic-data-types","display_name":"algebraic data types","score":0.8069999814033508},{"id":"https://openalex.org/keywords/dynamic-loading","display_name":"dynamic loading","score":0.8510000109672546},{"id":"https://openalex.org/keywords/functional-programming","display_name":"functional programming","score":0.49000000953674316}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8133108615875244},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7985438108444214},{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.7844600677490234},{"id":"https://openalex.org/C138958017","wikidata":"https://www.wikidata.org/wiki/Q190087","display_name":"Data type","level":2,"score":0.7510477304458618},{"id":"https://openalex.org/C7051814","wikidata":"https://www.wikidata.org/wiki/Q1051282","display_name":"Generic programming","level":2,"score":0.7094560861587524},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.6765706539154053},{"id":"https://openalex.org/C44779574","wikidata":"https://www.wikidata.org/wiki/Q736866","display_name":"Type safety","level":2,"score":0.5703121423721313},{"id":"https://openalex.org/C175971053","wikidata":"https://www.wikidata.org/wiki/Q827335","display_name":"Abstract data type","level":2,"score":0.5037285685539246},{"id":"https://openalex.org/C162319229","wikidata":"https://www.wikidata.org/wiki/Q175263","display_name":"Data structure","level":2,"score":0.45984992384910583},{"id":"https://openalex.org/C150762246","wikidata":"https://www.wikidata.org/wiki/Q4354073","display_name":"Reactive programming","level":4,"score":0.4419702887535095},{"id":"https://openalex.org/C34165917","wikidata":"https://www.wikidata.org/wiki/Q188267","display_name":"Programming paradigm","level":2,"score":0.43792209029197693},{"id":"https://openalex.org/C52723943","wikidata":"https://www.wikidata.org/wiki/Q1127410","display_name":"Serialization","level":2,"score":0.42073649168014526},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.367362916469574},{"id":"https://openalex.org/C50033165","wikidata":"https://www.wikidata.org/wiki/Q15712089","display_name":"Inductive programming","level":3,"score":0.2964023947715759}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/1159861.1159867","doi":"https://doi.org/10.1145/1159861.1159867","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1159861.1159867","pdf_url":null,"source":{"id":"https://openalex.org/S4306421243","display_name":"Workshop on Generic Programming","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"listed_in":[],"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"conference"},"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"}],"best_oa_location":null,"sustainable_development_goals":[],"study_designs":[],"awards":[],"funders":[{"id":"https://openalex.org/F4320306076","display_name":"National Science Foundation","ror":"https://ror.org/021nxhr62"}],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":41,"referenced_works":["https://openalex.org/W100198340","https://openalex.org/W326743114","https://openalex.org/W1546727036","https://openalex.org/W1556536463","https://openalex.org/W1594701869","https://openalex.org/W1610570299","https://openalex.org/W1784724433","https://openalex.org/W1829244603","https://openalex.org/W1854388022","https://openalex.org/W1947395352","https://openalex.org/W1961222213","https://openalex.org/W1973902553","https://openalex.org/W1979323701","https://openalex.org/W1987203566","https://openalex.org/W2005130481","https://openalex.org/W2037021191","https://openalex.org/W2046671194","https://openalex.org/W2055027013","https://openalex.org/W2068706008","https://openalex.org/W2082765113","https://openalex.org/W2093896470","https://openalex.org/W2109649240","https://openalex.org/W2124476310","https://openalex.org/W2127347132","https://openalex.org/W2131916293","https://openalex.org/W2135265328","https://openalex.org/W2136177623","https://openalex.org/W2138659327","https://openalex.org/W2140207165","https://openalex.org/W2140647971","https://openalex.org/W2143973850","https://openalex.org/W2144470103","https://openalex.org/W2157137298","https://openalex.org/W2157387202","https://openalex.org/W2159410989","https://openalex.org/W2913811625","https://openalex.org/W3004062484","https://openalex.org/W4241555624","https://openalex.org/W4250126356","https://openalex.org/W4285719527","https://openalex.org/W6634246166"],"related_works":["https://openalex.org/W7100059233","https://openalex.org/W7096834546","https://openalex.org/W7100520832","https://openalex.org/W7097857416","https://openalex.org/W2170697151","https://openalex.org/W2067607302","https://openalex.org/W7026759551","https://openalex.org/W7095723639","https://openalex.org/W7099796057","https://openalex.org/W7073650420"],"abstract_inverted_index":{"Type-directed":[0],"programming":[1,11,54,70,161],"is":[2,16,55,206],"an":[3,148],"important":[4],"idiom":[5],"for":[6,58,98,129,195],"software":[7],"design.":[8],"In":[9],"type-directed":[10,82,102,155,185],"the":[12,19,56,123,159,165,173],"behavior":[13],"of":[14,22,32,110,119,214],"programs":[15,210],"guided":[17],"by":[18,106,157,164],"type":[20,111,219],"structure":[21],"data.":[23],"It":[24],"makes":[25],"it":[26],"possible":[27],"to":[28,43,87,125,141,151,187,208],"implement":[29],"many":[30],"sorts":[31],"operations,":[33],"such":[34,121],"as":[35,48,122,144],"serialization,traversals,":[36],"and":[37,40,91,135,178],"queries,only":[38],"once":[39],"without":[41],"needing":[42],"continually":[44],"revise":[45],"their":[46],"implementations":[47],"new":[49],"data":[50,73,133],"types":[51,134,137,196],"are":[52,85],"defined.Type-directed":[53],"basis":[57],"recent":[59],"research":[60,76],"into":[61],"\"scrapping\"":[62],"tedious":[63],"boilerplate":[64],"code":[65],"that":[66,84,197,211],"arises":[67],"in":[68,104,176],"functional":[69],"with":[71,193],"algebraic":[72],"types.":[74],"This":[75,204],"has":[77,116],"primarily":[78],"focused":[79],"on":[80],"writing":[81,99,152,209],"functions":[83,103,156,186],"closed":[86],"extension.":[88],"However,":[89],"L\u00e4mmel":[90,177],"Peyton":[92,179],"Jones":[93],"recently":[94],"developed":[95],"a":[96,117],"technique":[97,115],"openly":[100,153],"extensible":[101,154],"Haskell":[105],"making":[107],"clever":[108],"use":[109,213],"classes.":[112],"Unfortunately,":[113],"this":[114],"number":[118],"limitations":[120,174],"inability":[124],"write":[126],"specialized":[127],"cases":[128,194],"existential":[130],"or":[131,217],"nested":[132],"function":[136],"becoming":[138],"too":[139],"constrained":[140],"be":[142,188],"used":[143],"first-class":[145],"functions.We":[146],"present":[147,175],"alternate":[149],"approach":[150],"using":[158],"aspect-oriented":[160],"features":[162],"provided":[163],"language":[166],"AspectML.":[167],"Our":[168],"solution":[169],"not":[170,199],"only":[171],"avoids":[172],"Jones's":[180],"technique,":[181],"but":[182],"also":[183],"allows":[184],"extended":[189],"at":[190,202],"any":[191],"time":[192],"were":[198],"even":[200],"known":[201],"compiletime.":[203],"capability":[205],"critical":[207],"make":[212],"dynamic":[215],"loading":[216],"runtime":[218],"generativity.":[220]},"counts_by_year":[{"year":2020,"cited_by_count":1}],"updated_date":"2026-11-07T11:25:07.637180","created_date":"2016-06-24T00:00:00"}
