{"id":"https://openalex.org/W4401597378","doi":"https://doi.org/10.1145/3674631","title":"The Functional, the Imperative, and the Sudoku: Getting Good, Bad, and Ugly to Get Along (Functional Pearl)","display_name":"The Functional, the Imperative, and the Sudoku: Getting Good, Bad, and Ugly to Get Along (Functional Pearl)","publication_year":2024,"publication_date":"2024-08-15","ids":{"openalex":"https://openalex.org/W4401597378","doi":"https://doi.org/10.1145/3674631"},"language":"en","primary_location":{"id":"doi:10.1145/3674631","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3674631","pdf_url":null,"source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"diamond","oa_url":"https://doi.org/10.1145/3674631","any_repository_has_fulltext":true},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5102890645","display_name":"Manuel Serrano","orcid":"https://orcid.org/0000-0002-5240-1610"},"institutions":[{"id":"https://openalex.org/I1326498283","display_name":"Institut national de recherche en sciences et technologies du num\u00e9rique","ror":"https://ror.org/02kvxyf05","country_code":"FR","type":"government","lineage":["https://openalex.org/I1326498283"]},{"id":"https://openalex.org/I201841394","display_name":"Universit\u00e9 C\u00f4te d'Azur","ror":"https://ror.org/019tgvf94","country_code":"FR","type":"education","lineage":["https://openalex.org/I201841394"]},{"id":"https://openalex.org/I4210126779","display_name":"Observatoire de la C\u00f4te d\u2019Azur","ror":"https://ror.org/039fj2469","country_code":"FR","type":"facility","lineage":["https://openalex.org/I201841394","https://openalex.org/I4210126779"]}],"countries":["FR"],"is_corresponding":true,"raw_author_name":"Manuel Serrano","raw_affiliation_strings":["Inria, Sophia Antipolis, France","Universit\u00e9 C\u00f4te d'Azur, Nice, France","Inria - Institut National de Recherche en Informatique et en Automatique (Domaine de Voluceau\r\nRocquencourt - BP 105\r\n78153 Le Chesnay Cedex - France)"],"raw_orcid":"https://orcid.org/0000-0002-5240-1610","affiliations":[{"raw_affiliation_string":"Inria, Sophia Antipolis, France","institution_ids":["https://openalex.org/I1326498283"]},{"raw_affiliation_string":"Universit\u00e9 C\u00f4te d'Azur, Nice, France","institution_ids":["https://openalex.org/I4210126779","https://openalex.org/I201841394"]},{"raw_affiliation_string":"Inria - Institut National de Recherche en Informatique et en Automatique (Domaine de Voluceau\r\nRocquencourt - BP 105\r\n78153 Le Chesnay Cedex - France)","institution_ids":[]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5081388086","display_name":"Robert Bruce Findler","orcid":null},"institutions":[{"id":"https://openalex.org/I111979921","display_name":"Northwestern University","ror":"https://ror.org/000e0be47","country_code":"US","type":"education","lineage":["https://openalex.org/I111979921"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Robert Bruce Findler","raw_affiliation_strings":["Northwestern University, Evanston, USA"],"raw_orcid":"https://orcid.org/0000-0002-4245-2000","affiliations":[{"raw_affiliation_string":"Northwestern University, Evanston, USA","institution_ids":["https://openalex.org/I111979921"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":2,"corresponding_author_ids":["https://openalex.org/A5102890645"],"corresponding_institution_ids":["https://openalex.org/I1326498283","https://openalex.org/I201841394","https://openalex.org/I4210126779"],"apc_list":null,"apc_paid":null,"fwci":0.0,"has_fulltext":false,"cited_by_count":0,"citation_normalized_percentile":{"value":0.12014925,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":"8","issue":"ICFP","first_page":"177","last_page":"202"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10904","display_name":"Embedded Systems Design Techniques","score":0.9952999949455261,"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"}},"topics":[{"id":"https://openalex.org/T10904","display_name":"Embedded Systems Design Techniques","score":0.9952999949455261,"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"}},{"id":"https://openalex.org/T10142","display_name":"Formal Methods in Verification","score":0.9933000206947327,"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/T10933","display_name":"Real-Time Systems Scheduling","score":0.9883000254631042,"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/computer-science","display_name":"Computer science","score":0.8352662324905396},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.7370091676712036},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.7285102605819702},{"id":"https://openalex.org/keywords/thread","display_name":"Thread (computing)","score":0.5868380665779114},{"id":"https://openalex.org/keywords/declarative-programming","display_name":"Declarative programming","score":0.5361105799674988},{"id":"https://openalex.org/keywords/programming-paradigm","display_name":"Programming paradigm","score":0.48239123821258545},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.3828886151313782},{"id":"https://openalex.org/keywords/inductive-programming","display_name":"Inductive programming","score":0.15392795205116272}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8352662324905396},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.7370091676712036},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.7285102605819702},{"id":"https://openalex.org/C138101251","wikidata":"https://www.wikidata.org/wiki/Q213092","display_name":"Thread (computing)","level":2,"score":0.5868380665779114},{"id":"https://openalex.org/C146206909","wikidata":"https://www.wikidata.org/wiki/Q531152","display_name":"Declarative programming","level":4,"score":0.5361105799674988},{"id":"https://openalex.org/C34165917","wikidata":"https://www.wikidata.org/wiki/Q188267","display_name":"Programming paradigm","level":2,"score":0.48239123821258545},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.3828886151313782},{"id":"https://openalex.org/C50033165","wikidata":"https://www.wikidata.org/wiki/Q15712089","display_name":"Inductive programming","level":3,"score":0.15392795205116272}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/3674631","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3674631","pdf_url":null,"source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},{"id":"pmh:oai:HAL:hal-04828639v1","is_oa":true,"landing_page_url":"https://inria.hal.science/hal-04828639","pdf_url":null,"source":{"id":"https://openalex.org/S4306402512","display_name":"HAL (Le Centre pour la Communication Scientifique Directe)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I1294671590","host_organization_name":"Centre National de la Recherche Scientifique","host_organization_lineage":["https://openalex.org/I1294671590"],"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":"Proceedings of the ACM on Programming Languages, 2024, 8 (242), pp.177-202. &#x27E8;10.1145/3674631&#x27E9;","raw_type":"Journal articles"}],"best_oa_location":{"id":"doi:10.1145/3674631","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3674631","pdf_url":null,"source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":true,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":14,"referenced_works":["https://openalex.org/W1738815643","https://openalex.org/W1974820180","https://openalex.org/W1975124265","https://openalex.org/W1983093418","https://openalex.org/W2045255985","https://openalex.org/W2058713130","https://openalex.org/W2125415493","https://openalex.org/W2152866817","https://openalex.org/W2339714652","https://openalex.org/W3032938888","https://openalex.org/W3206640477","https://openalex.org/W4246404081","https://openalex.org/W6892822413","https://openalex.org/W7139033639"],"related_works":["https://openalex.org/W625381833","https://openalex.org/W3136890312","https://openalex.org/W3004782279","https://openalex.org/W1988194486","https://openalex.org/W2060445097","https://openalex.org/W2286281461","https://openalex.org/W1585224757","https://openalex.org/W4296878212","https://openalex.org/W3169832545","https://openalex.org/W2886887129"],"abstract_inverted_index":{"Conventional":[0],"wisdom":[1],"suggests":[2],"that":[3,74,107,162,196,209,252],"the":[4,13,25,44,54,62,83,91,101,105,108,112,117,126,141,151,157,160,177,261],"benefits":[5,55,161,251],"of":[6,15,20,27,56,64,93,119,159,179,183,187,192],"functional":[7,41,57,68,79,223],"programming":[8,42,69,224],"no":[9],"longer":[10],"apply":[11],"in":[12,37,78,111,125,220,260],"presence":[14],"even":[16,131,147,226,237],"a":[17,50,72,86,120,198,221,254],"small":[18],"amount":[19],"imperative":[21,28,46],"code,":[22],"as":[23,34,150,165,211,215],"if":[24,216],"addition":[26],"code":[29,189,208],"effectively":[30],"subtracts.":[31],"And":[32],"yet,":[33],"we":[35],"show":[36],"this":[38,180],"paper,":[39],"combining":[40],"with":[43],"special":[45],"language":[47],"Esterel":[48,66,95,133],"provides":[49],"multiplicative":[51],"improvement":[52],"to":[53,61,85,143,206,213],"programming.":[58],"The":[59],"key":[60],"benefit":[63],"both":[65,75],"and":[67,104,140,146,194,236,244,257],"stems":[70],"from":[71],"restriction":[73],"share.":[76],"As":[77],"programming,":[80],"where":[81,116],"only":[82],"inputs":[84],"function":[87],"determine":[88],"its":[89],"outputs,":[90],"state":[92,106],"an":[94,184],"computation":[96,109,152],"is":[97,123,156,204,210],"fully":[98],"determined":[99],"by":[100],"program\u2019s":[102,171],"input":[103],"had":[110],"previous":[113],"time":[114,121],"step,":[115],"notion":[118],"step":[122],"explicit":[124],"language.":[127],"Esterel\u2019s":[128],"guarantee":[129],"holds":[130],"though":[132,227],"programs":[134],"feature":[135],"concurrent":[136,242],"threads,":[137,231],"mutable":[138,232],"state,":[139,233],"ability":[142],"create,":[144],"suspend,":[145],"terminate":[148],"threads":[149],"proceeds.":[153],"This":[154],"similarity":[155],"root":[158],"programmers":[163],"accrue":[164],"they":[166],"informally":[167],"reason":[168],"about":[169],"their":[170],"behavior.":[172],"To":[173],"illustrate":[174],"these":[175],"benefits,":[176],"bulk":[178],"paper":[181],"consists":[182],"in-depth":[185],"exploration":[186],"HipHop":[188],"(a":[190],"mashup":[191],"JavaScript":[193],"Esterel)":[195],"implements":[197],"Sudoku":[199],"solver,":[200],"showing":[201],"how":[202],"it":[203,217,228],"possible":[205],"write":[207],"easy":[212],"understand":[214],"were":[218],"written":[219],"pure":[222],"style,":[225],"uses":[229],"multiple":[230],"thread":[234,238],"preemption,":[235],"abortion.":[239],"Even":[240],"better,":[241],"composition":[243],"task":[245,258],"canceling":[246],"provide":[247],"significant":[248],"program":[249],"structuring":[250],"allow":[253],"clean":[255],"decomposition":[256],"separation":[259],"solver.":[262]},"counts_by_year":[],"updated_date":"2026-05-07T13:39:58.223016","created_date":"2025-10-10T00:00:00"}
