{"id":"https://openalex.org/W2743842295","doi":"https://doi.org/10.22152/programming-journal.org/2018/2/1","title":"Scoped Extension Methods in Dynamically-Typed Languages","display_name":"Scoped Extension Methods in Dynamically-Typed Languages","publication_year":2017,"publication_date":"2017-08-04","ids":{"openalex":"https://openalex.org/W2743842295","doi":"https://doi.org/10.22152/programming-journal.org/2018/2/1","mag":"2743842295"},"language":"en","primary_location":{"id":"doi:10.22152/programming-journal.org/2018/2/1","is_oa":true,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2018/2/1","pdf_url":"https://arxiv.org/pdf/1708.01679v1","source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},"type":"article","indexed_in":["arxiv","crossref"],"open_access":{"is_oa":true,"oa_status":"bronze","oa_url":"https://arxiv.org/pdf/1708.01679v1","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5044755913","display_name":"Guillermo Polito","orcid":"https://orcid.org/0000-0003-0813-8584"},"institutions":[{"id":"https://openalex.org/I4210115519","display_name":"Centre de Recherche en Informatique","ror":"https://ror.org/020cdve92","country_code":"FR","type":"facility","lineage":["https://openalex.org/I190752583","https://openalex.org/I2746051580","https://openalex.org/I4210091621","https://openalex.org/I4210115519","https://openalex.org/I70768539"]},{"id":"https://openalex.org/I2279609970","display_name":"Universit\u00e9 de Lille","ror":"https://ror.org/02kzqn938","country_code":"FR","type":"education","lineage":["https://openalex.org/I2279609970"]},{"id":"https://openalex.org/I7454413","display_name":"\u00c9cole Centrale de Lille","ror":"https://ror.org/01x441g73","country_code":"FR","type":"education","lineage":["https://openalex.org/I7454413"]},{"id":"https://openalex.org/I1294671590","display_name":"Centre National de la Recherche Scientifique","ror":"https://ror.org/02feahw73","country_code":"FR","type":"funder","lineage":["https://openalex.org/I1294671590"]}],"countries":["FR"],"is_corresponding":true,"raw_author_name":"Guillermo Polito","raw_affiliation_strings":["Univ. Lille, CNRS, Centrale Lille, Inria, UMR 9189 - CRIStAL - Centre de Recherche en Informatique Signal et Automatique de Lille, France"],"affiliations":[{"raw_affiliation_string":"Univ. Lille, CNRS, Centrale Lille, Inria, UMR 9189 - CRIStAL - Centre de Recherche en Informatique Signal et Automatique de Lille, France","institution_ids":["https://openalex.org/I2279609970","https://openalex.org/I7454413","https://openalex.org/I1294671590","https://openalex.org/I4210115519"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5055351804","display_name":"Camille Teruel","orcid":"https://orcid.org/0000-0001-8376-0571"},"institutions":[{"id":"https://openalex.org/I1326498283","display_name":"Institut national de recherche en informatique et en automatique","ror":"https://ror.org/02kvxyf05","country_code":"FR","type":"funder","lineage":["https://openalex.org/I1326498283"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"Camille Teruel","raw_affiliation_strings":["Inria, France","RMOD - Analyses and Languages Constructs for Object-Oriented Application Evolution (France)"],"affiliations":[{"raw_affiliation_string":"Inria, France","institution_ids":["https://openalex.org/I1326498283"]},{"raw_affiliation_string":"RMOD - Analyses and Languages Constructs for Object-Oriented Application Evolution (France)","institution_ids":[]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5031290426","display_name":"St\u00e9\u0301phane Ducasse","orcid":"https://orcid.org/0000-0001-6070-6599"},"institutions":[{"id":"https://openalex.org/I1326498283","display_name":"Institut national de recherche en informatique et en automatique","ror":"https://ror.org/02kvxyf05","country_code":"FR","type":"funder","lineage":["https://openalex.org/I1326498283"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"St\u00e9phane Ducasse","raw_affiliation_strings":["INRIA, France","RMOD - Analyses and Languages Constructs for Object-Oriented Application Evolution (France)"],"affiliations":[{"raw_affiliation_string":"INRIA, France","institution_ids":["https://openalex.org/I1326498283"]},{"raw_affiliation_string":"RMOD - Analyses and Languages Constructs for Object-Oriented Application Evolution (France)","institution_ids":[]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5014996494","display_name":"Luc Fabresse","orcid":"https://orcid.org/0000-0002-2223-7258"},"institutions":[{"id":"https://openalex.org/I160727737","display_name":"\u00c9cole des Mines de Douai","ror":"https://ror.org/05ate2e14","country_code":"FR","type":"education","lineage":["https://openalex.org/I160727737"]}],"countries":["FR"],"is_corresponding":false,"raw_author_name":"Luc Fabresse","raw_affiliation_strings":["Mines Douai, IA, F-59508 Douai, France, France"],"affiliations":[{"raw_affiliation_string":"Mines Douai, IA, F-59508 Douai, France, France","institution_ids":["https://openalex.org/I160727737"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":4,"corresponding_author_ids":["https://openalex.org/A5044755913"],"corresponding_institution_ids":["https://openalex.org/I1294671590","https://openalex.org/I2279609970","https://openalex.org/I4210115519","https://openalex.org/I7454413"],"apc_list":null,"apc_paid":null,"fwci":0.2078,"has_fulltext":true,"cited_by_count":1,"citation_normalized_percentile":{"value":0.64076381,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":94},"biblio":{"volume":"2","issue":"1","first_page":null,"last_page":null},"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.9811999797821045,"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.9811999797821045,"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.9731000065803528,"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/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.9380999803543091,"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.8459335565567017},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7012773156166077},{"id":"https://openalex.org/keywords/extension","display_name":"Extension (predicate logic)","score":0.6623104810714722},{"id":"https://openalex.org/keywords/class","display_name":"Class (philosophy)","score":0.5116736888885498},{"id":"https://openalex.org/keywords/context","display_name":"Context (archaeology)","score":0.4457484185695648},{"id":"https://openalex.org/keywords/scope","display_name":"Scope (computer science)","score":0.4324195981025696},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.4066019654273987},{"id":"https://openalex.org/keywords/artificial-intelligence","display_name":"Artificial intelligence","score":0.12820246815681458}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8459335565567017},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7012773156166077},{"id":"https://openalex.org/C2778029271","wikidata":"https://www.wikidata.org/wiki/Q5421931","display_name":"Extension (predicate logic)","level":2,"score":0.6623104810714722},{"id":"https://openalex.org/C2777212361","wikidata":"https://www.wikidata.org/wiki/Q5127848","display_name":"Class (philosophy)","level":2,"score":0.5116736888885498},{"id":"https://openalex.org/C2779343474","wikidata":"https://www.wikidata.org/wiki/Q3109175","display_name":"Context (archaeology)","level":2,"score":0.4457484185695648},{"id":"https://openalex.org/C2778012447","wikidata":"https://www.wikidata.org/wiki/Q1034415","display_name":"Scope (computer science)","level":2,"score":0.4324195981025696},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.4066019654273987},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.12820246815681458},{"id":"https://openalex.org/C86803240","wikidata":"https://www.wikidata.org/wiki/Q420","display_name":"Biology","level":0,"score":0.0},{"id":"https://openalex.org/C151730666","wikidata":"https://www.wikidata.org/wiki/Q7205","display_name":"Paleontology","level":1,"score":0.0}],"mesh":[],"locations_count":4,"locations":[{"id":"doi:10.22152/programming-journal.org/2018/2/1","is_oa":true,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2018/2/1","pdf_url":"https://arxiv.org/pdf/1708.01679v1","source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},{"id":"pmh:oai:arXiv.org:1708.01679","is_oa":true,"landing_page_url":"http://arxiv.org/abs/1708.01679","pdf_url":"https://arxiv.org/pdf/1708.01679","source":{"id":"https://openalex.org/S4306400194","display_name":"arXiv (Cornell University)","issn_l":null,"issn":null,"is_oa":true,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I205783295","host_organization_name":"Cornell University","host_organization_lineage":["https://openalex.org/I205783295"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":null,"raw_type":"text"},{"id":"pmh:oai:HAL:hal-01609310v1","is_oa":true,"landing_page_url":"https://hal.science/hal-01609310","pdf_url":"https://hal.science/hal-01609310/document","source":{"id":"https://openalex.org/S4406922466","display_name":"SPIRE - Sciences Po Institutional REpository","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"repository"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"The Art, Science, and Engineering of Programming, 2017, 2 (1), &#x27E8;10.22152/programming-journal.org/2018/2/1&#x27E9;","raw_type":"Journal articles"},{"id":"pmh:oai:lilloa.univ-lille.fr:20.500.12210/23971","is_oa":true,"landing_page_url":"http://hdl.handle.net/20.500.12210/23971","pdf_url":null,"source":{"id":"https://openalex.org/S4306402203","display_name":"LillOA (Universit\u00e9 de Lille (University Of Lille))","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I4210123514","host_organization_name":"Centre d'Etudes en Civilisations, Langues et Litt\u00e9ratures Etrang\u00e8res","host_organization_lineage":["https://openalex.org/I4210123514"],"host_organization_lineage_names":[],"type":"repository"},"license":"other-oa","license_id":"https://openalex.org/licenses/other-oa","version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"info:eu-repo/semantics/article"}],"best_oa_location":{"id":"doi:10.22152/programming-journal.org/2018/2/1","is_oa":true,"landing_page_url":"https://doi.org/10.22152/programming-journal.org/2018/2/1","pdf_url":"https://arxiv.org/pdf/1708.01679v1","source":{"id":"https://openalex.org/S4210199781","display_name":"The Art Science and Engineering of Programming","issn_l":"2473-7321","issn":["2473-7321"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":null,"host_organization_name":null,"host_organization_lineage":[],"host_organization_lineage_names":[],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"The Art, Science, and Engineering of Programming","raw_type":"journal-article"},"sustainable_development_goals":[{"score":0.4000000059604645,"display_name":"Quality Education","id":"https://metadata.un.org/sdg/4"}],"awards":[],"funders":[],"has_content":{"grobid_xml":true,"pdf":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2743842295.pdf","grobid_xml":"https://content.openalex.org/works/W2743842295.grobid-xml"},"referenced_works_count":0,"referenced_works":[],"related_works":["https://openalex.org/W4241523039","https://openalex.org/W2360028903","https://openalex.org/W4280543773","https://openalex.org/W178231042","https://openalex.org/W2366083136","https://openalex.org/W2387622493","https://openalex.org/W1932132538","https://openalex.org/W2357832196","https://openalex.org/W1566252468","https://openalex.org/W4200375594"],"abstract_inverted_index":{"An":[0],"extension":[1,20,60,70,83,95,110,137,196],"method":[2,5,84,96,111,138,164,197],"is":[3,38,44,97,253,257],"a":[4,8,39,117,140,160,178,286],"declared":[6],"in":[7,89,116,199,269],"package":[9,13],"other":[10,220],"than":[11],"the":[12,86,90,101,113,122,133,181,213,216],"of":[14,135,180,184,215,242,250],"its":[15],"host":[16],"class.":[17],"Thanks":[18],"to":[19,25,35,52,139,167,208,235,302,305],"methods,":[21],"developers":[22,80,106],"can":[23,68,230,292,298],"adapt":[24],"their":[26,144],"needs":[27],"classes":[28,37],"they":[29],"do":[30],"not":[31,147],"own:":[32],"adding":[33],"methods":[34,61,71,265],"core":[36],"typical":[40],"use":[41,231],"case.":[42],"This":[43],"particularly":[45],"useful":[46],"for":[47,72],"adapting":[48],"software":[49],"and":[50,99,151,162,190,211,219,248],"therefore":[51],"increase":[53],"reusability.":[54],"Inquiry.":[55],"In":[56,153,173,226],"most":[57],"dynamically-typed":[58,130,276],"languages,":[59],"are":[62,194,266],"globally":[63],"visible.":[64],"Because":[65],"any":[66,73],"developer":[67],"define":[69,81,108],"class,":[74,92],"naming":[75],"conflicts":[76,169],"ocur:":[77],"if":[78,104],"two":[79,105],"an":[82,109,136],"with":[85,112],"same":[87,91,114],"signature":[88],"only":[93],"one":[94,120],"visible":[98],"overwrites":[100],"other.":[102,123],"Similarly,":[103],"each":[107],"name":[115],"class":[118],"hierarchy,":[119],"overrides":[121],"To":[124],"avoid":[125],"such":[126,223,278],"\"accidental":[127,243],"overrides\",":[128],"some":[129],"languages":[131,271,277],"limit":[132],"visibility":[134],"particular":[141],"scope.":[142],"However,":[143,284],"semantics":[145,261],"have":[146],"been":[148],"fully":[149],"described":[150],"compared.":[152],"addition,":[154,227],"these":[155],"solutions":[156,198,218,252],"typically":[157],"rely":[158],"on":[159,259],"dedicated":[161],"slow":[163],"lookup":[165],"algorithm":[166],"resolve":[168],"at":[170],"runtime.":[171],"Approach.":[172],"this":[174,290],"article,":[175],"we":[176],"present":[177],"formalization":[179],"underlying":[182],"models":[183],"Ruby":[185,281],"refinements,":[186],"Groovy":[187],"categories,":[188],"Classboxes,":[189],"Method":[191],"Shelters":[192],"that":[193,272],"scoping":[195],"dynamicallytyped":[200],"languages.":[201],"Knowledge.":[202],"Our":[203,246],"formal":[204,233],"framework":[205,234],"allows":[206],"us":[207],"objectively":[209],"compare":[210],"analyze":[212],"shortcomings":[214],"studied":[217],"different":[221],"approaches":[222],"as":[224,279],"MultiJava.":[225],"language":[228],"designers":[229],"our":[232],"determine":[236],"which":[237],"mechanism":[238],"has":[239],"less":[240],"risk":[241],"overrides\".":[244],"Grounding.":[245],"comparison":[247],"analysis":[249],"existing":[251],"grounded":[254],"because":[255],"it":[256],"based":[258],"denotational":[260],"formalizations.":[262],"Importance.":[263],"Extension":[264],"widely":[267],"used":[268,301],"programming":[270],"support":[273],"them,":[274],"especially":[275],"Pharo,":[280],"or":[282,297,310],"Python.":[283],"without":[285],"carefully":[287],"designed":[288],"mechanism,":[289],"feature":[291],"cause":[293],"insidious":[294],"hidden":[295],"bugs":[296],"be":[299],"voluntarily":[300],"gain":[303],"access":[304],"protected":[306],"operations,":[307],"violate":[308],"encapsulation":[309],"break":[311],"fundamental":[312],"invariants.":[313]},"counts_by_year":[{"year":2020,"cited_by_count":1}],"updated_date":"2026-04-05T17:49:38.594831","created_date":"2025-10-10T00:00:00"}
