{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,30]],"date-time":"2026-07-30T03:22:34Z","timestamp":1785381754102,"version":"3.55.0"},"reference-count":75,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2021,10,15]],"date-time":"2021-10-15T00:00:00Z","timestamp":1634256000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"NSF","doi-asserted-by":"publisher","award":["1752814, CA-HDR 2029457, CA-HDR 1936731, CA-HDR 2033558"],"award-info":[{"award-number":["1752814, CA-HDR 2029457, CA-HDR 1936731, CA-HDR 2033558"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2021,10,20]]},"abstract":"<jats:p>How working statically-typed functional programmers write code is largely understudied. And yet, a better understanding of developer practices could pave the way for the design of more useful and usable tooling, more ergonomic languages, and more effective on-ramps into programming communities. The goal of this work is to address this knowledge gap: to better understand the high-level authoring patterns that statically-typed functional programmers employ. We conducted a grounded theory analysis of 30 programming sessions of practicing statically-typed functional programmers, 15 of which also included a semi-structured interview. The theory we developed gives insight into how the specific affordances of statically-typed functional programming affect domain modeling, type construction, focusing techniques, exploratory and reasoning strategies, and expressions of intent. We conducted a set of quantitative lab experiments to validate our findings, including that statically-typed functional programmers often iterate between editing types and expressions, that they often run their compiler on code even when they know it will not successfully compile, and that they make textual program edits that reliably signal future edits that they intend to make. Lastly, we outline the implications of our findings for language and tool design. The success of this approach in revealing program authorship patterns suggests that the same methodology could be used to study other understudied programmer populations.<\/jats:p>","DOI":"10.1145\/3485532","type":"journal-article","created":{"date-parts":[[2021,10,15]],"date-time":"2021-10-15T19:18:28Z","timestamp":1634325508000},"page":"1-30","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":17,"title":["How statically-typed functional programmers write code"],"prefix":"10.1145","volume":"5","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-2311-1873","authenticated-orcid":false,"given":"Justin","family":"Lubin","sequence":"first","affiliation":[{"name":"University of California at Berkeley, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0557-3580","authenticated-orcid":false,"given":"Sarah E.","family":"Chasins","sequence":"additional","affiliation":[{"name":"University of California at Berkeley, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2021,10,15]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1985.231883"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2012.01.059"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0364-0213(84)80013-0"},{"key":"e_1_2_2_4_1","doi-asserted-by":"crossref","unstructured":"Jon Awbrey and Susan Awbrey. 1995. Interpretation as Action: The Risk of Inquiry. Inquiry: Critical Thinking Across the Disciplines Feb. https:\/\/doi.org\/10.5840\/inquiryctnews199515125  Jon Awbrey and Susan Awbrey. 1995. Interpretation as Action: The Risk of Inquiry. Inquiry: Critical Thinking Across the Disciplines Feb. https:\/\/doi.org\/10.5840\/inquiryctnews199515125","DOI":"10.5840\/inquiryctnews199515125"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1093\/acprof:oso\/9780198528012.001.0001"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3236024.3236040"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3428295"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.1996.493406"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/3159450.3159453"},{"key":"e_1_2_2_10_1","volume-title":"Visual Attention and Representation Switching in Java Program Debugging: A Study Using Eye Movement Tracking","author":"Bednarik Roman"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/1117309.1117356"},{"key":"e_1_2_2_12_1","volume-title":"Contextual Design: Defining Customer-Centered Systems","author":"Beyer Hugh","year":"1997"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2839509.2844574"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/3328778.3366847"},{"key":"e_1_2_2_15_1","volume-title":"Constructing Grounded Theory: A Practical Guide Through Qualitative Analysis","author":"Charmaz Kathy"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2007.02.011"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1080\/01449299108924281"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-03035-6_2"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4471-0111-6"},{"key":"e_1_2_2_20_1","volume-title":"Proceedings of the Sixth Annual Cognitive Science Meetings.","author":"Farrell Robert G."},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/3105726.3106183"},{"key":"e_1_2_2_22_1","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma Erich","year":"1995"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1016\/B978-0-12-350772-3.50019-7"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/3242744.3242760"},{"key":"e_1_2_2_25_1","volume-title":"Strauss","author":"Glaser Barney G.","year":"1967"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1006\/jvlc.1996.0009"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/1188966.1188968"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1080\/07370024.1990.9667157"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.5555\/54968.54973"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0166-4115(08)62386-9"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2168556.2168592"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2012.30"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2014.03.050"},{"key":"e_1_2_2_34_1","volume-title":"Atwood","author":"Jeffries Robin","year":"1981"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/2908080.2908117"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/765891.766135"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1109\/HCC.2003.1260196"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10664-020-09810-1"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1016\/0164-1212(87)90032-X"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/2361276.2361301"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/3411763.3451515"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.4230\/OASIcs.PLATEAU.2019.3"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/3408991"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4939-0378-8_2"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1109\/MC.2016.200"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/1015864.1015888"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/1352135.1352192"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1109\/VL.2000.874379"},{"key":"e_1_2_2_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/3377814.3381711"},{"key":"e_1_2_2_50_1","doi-asserted-by":"publisher","DOI":"10.1207\/s15327051hci0204_3"},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1037\/h0080061"},{"key":"e_1_2_2_52_1","volume-title":"Narrative Analysis","author":"Riessman Catherine Kohler"},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2015.2442238"},{"key":"e_1_2_2_54_1","doi-asserted-by":"publisher","DOI":"10.1109\/ESEM.2015.7321188"},{"key":"e_1_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/2568225.2568247"},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2012.6227188"},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICASTECH.2009.5409746"},{"key":"e_1_2_2_58_1","doi-asserted-by":"publisher","DOI":"10.1109\/CESI.2017.2"},{"key":"e_1_2_2_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/1064978.1065045"},{"key":"e_1_2_2_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/1168857.1168907"},{"key":"e_1_2_2_61_1","doi-asserted-by":"publisher","DOI":"10.1016\/B978-0-934613-12-5.50042-2"},{"key":"e_1_2_2_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/6138.6145"},{"key":"e_1_2_2_63_1","volume-title":"Simulating Student Programmers. In International Joint Conference on Artificial Intelligence (IJCAI).","author":"James"},{"key":"e_1_2_2_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/2884781.2884833"},{"key":"e_1_2_2_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/1453101.1453117"},{"key":"e_1_2_2_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/3444945"},{"key":"e_1_2_2_67_1","doi-asserted-by":"publisher","DOI":"10.1007\/11546382_9"},{"key":"e_1_2_2_68_1","doi-asserted-by":"publisher","DOI":"10.1145\/2666356.2594340"},{"key":"e_1_2_2_69_1","volume-title":"International Conference on Information Systemcs (ICIS). https:\/\/aisel.aisnet.org\/icis2006\/31","author":"Urquhart Cathy","year":"2006"},{"key":"e_1_2_2_70_1","unstructured":"Willemien Visser. 1987. Strategies in Programming Programmable Controllers: A Field Study on a Professional Programmer. In Empirical Studies of Programmers G. Olson S. Sheppard and E. Soloway (Eds.).  Willemien Visser. 1987. Strategies in Programming Programmable Controllers: A Field Study on a Professional Programmer. In Empirical Studies of Programmers G. Olson S. Sheppard and E. Soloway (Eds.)."},{"key":"e_1_2_2_71_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.402076"},{"key":"e_1_2_2_72_1","doi-asserted-by":"publisher","DOI":"10.1145\/2591708.2591762"},{"key":"e_1_2_2_73_1","doi-asserted-by":"publisher","DOI":"10.1080\/026783700417249"},{"key":"e_1_2_2_74_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICPC.2007.10"},{"key":"e_1_2_2_75_1","doi-asserted-by":"publisher","DOI":"10.1145\/3313831.3376382"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3485532","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3485532","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3485532","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:18:40Z","timestamp":1750191520000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3485532"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,10,15]]},"references-count":75,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2021,10,20]]}},"alternative-id":["10.1145\/3485532"],"URL":"https:\/\/doi.org\/10.1145\/3485532","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,10,15]]},"assertion":[{"value":"2021-10-15","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}