{"id":"https://openalex.org/W2885866498","doi":"https://doi.org/10.1145/3236797","title":"Keep your laziness in check","display_name":"Keep your laziness in check","publication_year":2018,"publication_date":"2018-07-30","ids":{"openalex":"https://openalex.org/W2885866498","doi":"https://doi.org/10.1145/3236797","mag":"2885866498"},"language":"en","primary_location":{"id":"doi:10.1145/3236797","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3236797","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3236797","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://dl.acm.org/doi/pdf/10.1145/3236797","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5081185058","display_name":"Kenneth Foner","orcid":null},"institutions":[{"id":"https://openalex.org/I36788626","display_name":"California University of Pennsylvania","ror":"https://ror.org/01spssf70","country_code":"US","type":"education","lineage":["https://openalex.org/I36788626"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Kenneth Foner","raw_affiliation_strings":["University of Pennsylvania, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Pennsylvania, USA","institution_ids":["https://openalex.org/I36788626"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5010653419","display_name":"Hengchu Zhang","orcid":null},"institutions":[{"id":"https://openalex.org/I36788626","display_name":"California University of Pennsylvania","ror":"https://ror.org/01spssf70","country_code":"US","type":"education","lineage":["https://openalex.org/I36788626"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Hengchu Zhang","raw_affiliation_strings":["University of Pennsylvania, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Pennsylvania, USA","institution_ids":["https://openalex.org/I36788626"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5075217645","display_name":"Leonidas Lampropoulos","orcid":"https://orcid.org/0000-0003-0269-9815"},"institutions":[{"id":"https://openalex.org/I36788626","display_name":"California University of Pennsylvania","ror":"https://ror.org/01spssf70","country_code":"US","type":"education","lineage":["https://openalex.org/I36788626"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Leonidas Lampropoulos","raw_affiliation_strings":["University of Pennsylvania, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Pennsylvania, USA","institution_ids":["https://openalex.org/I36788626"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":["https://openalex.org/I36788626"],"apc_list":null,"apc_paid":null,"fwci":1.1658,"has_fulltext":true,"cited_by_count":7,"citation_normalized_percentile":{"value":0.80716431,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":97},"biblio":{"volume":"2","issue":"ICFP","first_page":"1","last_page":"30"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9994000196456909,"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/T10743","display_name":"Software Testing and Debugging Techniques","score":0.9994000196456909,"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/T10126","display_name":"Logic, programming, and type systems","score":0.9983000159263611,"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/T11424","display_name":"Security and Verification in Computing","score":0.9958000183105469,"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/haskell","display_name":"Haskell","score":0.9725086688995361},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8368823528289795},{"id":"https://openalex.org/keywords/laziness","display_name":"Laziness","score":0.6584745645523071},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.6252968907356262},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.612730860710144},{"id":"https://openalex.org/keywords/property","display_name":"Property (philosophy)","score":0.555977463722229},{"id":"https://openalex.org/keywords/data-structure","display_name":"Data structure","score":0.4912373423576355},{"id":"https://openalex.org/keywords/theoretical-computer-science","display_name":"Theoretical computer science","score":0.4854491353034973},{"id":"https://openalex.org/keywords/monad","display_name":"Monad (category theory)","score":0.4685096740722656},{"id":"https://openalex.org/keywords/random-testing","display_name":"Random testing","score":0.42862409353256226},{"id":"https://openalex.org/keywords/arity","display_name":"Arity","score":0.4243852198123932},{"id":"https://openalex.org/keywords/constant","display_name":"Constant (computer programming)","score":0.4211195707321167},{"id":"https://openalex.org/keywords/queue","display_name":"Queue","score":0.41426095366477966},{"id":"https://openalex.org/keywords/test-case","display_name":"Test case","score":0.18100932240486145},{"id":"https://openalex.org/keywords/mathematics","display_name":"Mathematics","score":0.11601626873016357},{"id":"https://openalex.org/keywords/discrete-mathematics","display_name":"Discrete mathematics","score":0.08654606342315674}],"concepts":[{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.9725086688995361},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8368823528289795},{"id":"https://openalex.org/C2776447739","wikidata":"https://www.wikidata.org/wiki/Q484","display_name":"Laziness","level":2,"score":0.6584745645523071},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6252968907356262},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.612730860710144},{"id":"https://openalex.org/C189950617","wikidata":"https://www.wikidata.org/wiki/Q937228","display_name":"Property (philosophy)","level":2,"score":0.555977463722229},{"id":"https://openalex.org/C162319229","wikidata":"https://www.wikidata.org/wiki/Q175263","display_name":"Data structure","level":2,"score":0.4912373423576355},{"id":"https://openalex.org/C80444323","wikidata":"https://www.wikidata.org/wiki/Q2878974","display_name":"Theoretical computer science","level":1,"score":0.4854491353034973},{"id":"https://openalex.org/C33959348","wikidata":"https://www.wikidata.org/wiki/Q1630568","display_name":"Monad (category theory)","level":3,"score":0.4685096740722656},{"id":"https://openalex.org/C106159264","wikidata":"https://www.wikidata.org/wiki/Q17146789","display_name":"Random testing","level":4,"score":0.42862409353256226},{"id":"https://openalex.org/C110546421","wikidata":"https://www.wikidata.org/wiki/Q1315869","display_name":"Arity","level":2,"score":0.4243852198123932},{"id":"https://openalex.org/C2777027219","wikidata":"https://www.wikidata.org/wiki/Q1284190","display_name":"Constant (computer programming)","level":2,"score":0.4211195707321167},{"id":"https://openalex.org/C160403385","wikidata":"https://www.wikidata.org/wiki/Q220543","display_name":"Queue","level":2,"score":0.41426095366477966},{"id":"https://openalex.org/C128942645","wikidata":"https://www.wikidata.org/wiki/Q1568346","display_name":"Test case","level":3,"score":0.18100932240486145},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.11601626873016357},{"id":"https://openalex.org/C118615104","wikidata":"https://www.wikidata.org/wiki/Q121416","display_name":"Discrete mathematics","level":1,"score":0.08654606342315674},{"id":"https://openalex.org/C156772000","wikidata":"https://www.wikidata.org/wiki/Q864475","display_name":"Functor","level":2,"score":0.0},{"id":"https://openalex.org/C119857082","wikidata":"https://www.wikidata.org/wiki/Q2539","display_name":"Machine learning","level":1,"score":0.0},{"id":"https://openalex.org/C15744967","wikidata":"https://www.wikidata.org/wiki/Q9418","display_name":"Psychology","level":0,"score":0.0},{"id":"https://openalex.org/C138885662","wikidata":"https://www.wikidata.org/wiki/Q5891","display_name":"Philosophy","level":0,"score":0.0},{"id":"https://openalex.org/C152877465","wikidata":"https://www.wikidata.org/wiki/Q208042","display_name":"Regression analysis","level":2,"score":0.0},{"id":"https://openalex.org/C118552586","wikidata":"https://www.wikidata.org/wiki/Q7867","display_name":"Psychiatry","level":1,"score":0.0},{"id":"https://openalex.org/C111472728","wikidata":"https://www.wikidata.org/wiki/Q9471","display_name":"Epistemology","level":1,"score":0.0}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3236797","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3236797","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3236797","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"}],"best_oa_location":{"id":"doi:10.1145/3236797","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3236797","pdf_url":"https://dl.acm.org/doi/pdf/10.1145/3236797","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":[{"id":"https://openalex.org/G2090296422","display_name":"SHF: Small: Random Testing for Language Design","funder_award_id":"1421243","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"},{"id":"https://openalex.org/G6080364906","display_name":"Collaborative Research:  Expeditions in Computing:  The Science of Deep Specification","funder_award_id":"1521523","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"},{"id":"https://openalex.org/G7793973045","display_name":"SHF: Medium: Collaborative Research: The Theory and Practice of Dependent Types in Haskell","funder_award_id":"1703835","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"},{"id":"https://openalex.org/G8972006971","display_name":"CIF: Small: Rich Type Inference for Functional Programming","funder_award_id":"1319880","funder_id":"https://openalex.org/F4320306076","funder_display_name":"National Science Foundation"}],"funders":[{"id":"https://openalex.org/F4320306076","display_name":"National Science Foundation","ror":"https://ror.org/021nxhr62"},{"id":"https://openalex.org/F4320309370","display_name":"University of Pennsylvania","ror":"https://ror.org/00b30xv10"}],"has_content":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2885866498.pdf","grobid_xml":"https://content.openalex.org/works/W2885866498.grobid-xml"},"referenced_works_count":15,"referenced_works":["https://openalex.org/W1553352239","https://openalex.org/W1580184003","https://openalex.org/W1599275252","https://openalex.org/W1608714802","https://openalex.org/W1913632592","https://openalex.org/W2014995396","https://openalex.org/W2029976661","https://openalex.org/W2038856365","https://openalex.org/W2074592053","https://openalex.org/W2089241138","https://openalex.org/W2105045857","https://openalex.org/W2119717320","https://openalex.org/W2140825882","https://openalex.org/W4242126179","https://openalex.org/W4285719527"],"related_works":["https://openalex.org/W1489609867","https://openalex.org/W154014553","https://openalex.org/W2913635267","https://openalex.org/W2099741881","https://openalex.org/W2547899303","https://openalex.org/W4255783807","https://openalex.org/W1533419251","https://openalex.org/W2016320988","https://openalex.org/W2885866498","https://openalex.org/W1982529770"],"abstract_inverted_index":{"We":[0,79,127,145],"introduce":[1],"StrictCheck:":[2],"a":[3,22,110,136,147,154,158],"property-based":[4],"random":[5,77],"testing":[6,12,120],"framework":[7,90],"for":[8,91,119],"observing,":[9],"specifying,":[10],"and":[11,47,71,99,115],"the":[13,59,66,101],"strictness":[14,52,60,94,102],"of":[15,61,68,83,103,113,150,157,168],"Haskell":[16,105],"functions.":[17],"Strictness":[18],"is":[19],"traditionally":[20],"considered":[21],"non-functional":[23],"property;":[24],"StrictCheck":[25,96],"allows":[26],"it":[27,33],"to":[28,55,140],"be":[29,45],"tested":[30],"as":[31,135],"if":[32],"were":[34],"one,":[35],"by":[36],"reifying":[37],"demands":[38],"on":[39,122,165],"data":[40,69,125,159],"structures":[41],"so":[42],"they":[43],"can":[44,97],"manipulated":[46],"examined":[48],"within":[49],"Haskell.":[50],"Testing":[51],"requires":[53,116],"us":[54],"1)":[56],"precisely":[57],"specify":[58,98],"functions,":[62],"2)":[63],"efficiently":[64],"observe":[65],"evaluation":[67],"structures,":[70],"3)":[72],"correctly":[73],"generate":[74],"functions":[75,121],"with":[76],"strictness.":[78],"tackle":[80],"all":[81],"three":[82],"these":[84],"challenges,":[85],"designing":[86],"an":[87,129],"efficient":[88],"generic":[89],"precise":[92],"dynamic":[93],"testing.":[95],"test":[100],"any":[104],"function---including":[106],"higher-order":[107],"ones---with":[108],"only":[109],"constant":[111],"factor":[112],"overhead,":[114],"no":[117],"boilerplate":[118],"Haskell-standard":[123],"algebraic":[124],"types.":[126],"provide":[128],"expressive":[130],"but":[131],"low-level":[132],"specification":[133,156],"language":[134],"foundation":[137],"upon":[138],"which":[139],"build":[141],"future":[142],"higher-level":[143],"abstractions.":[144],"demonstrate":[146],"non-trivial":[148],"application":[149],"our":[151],"library,":[152],"developing":[153],"correct":[155],"structure":[160],"whose":[161],"properties":[162],"intrinsically":[163],"rely":[164],"subtle":[166],"use":[167],"laziness:":[169],"Okasaki's":[170],"constant-time":[171],"purely":[172],"functional":[173],"queue.":[174]},"counts_by_year":[{"year":2026,"cited_by_count":1},{"year":2025,"cited_by_count":1},{"year":2024,"cited_by_count":1},{"year":2021,"cited_by_count":1},{"year":2019,"cited_by_count":1},{"year":2018,"cited_by_count":2}],"updated_date":"2026-05-21T06:26:12.895304","created_date":"2025-10-10T00:00:00"}
