{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,12,26]],"date-time":"2025-12-26T07:10:17Z","timestamp":1766733017746,"version":"3.41.0"},"reference-count":30,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2020,11,13]],"date-time":"2020-11-13T00:00:00Z","timestamp":1605225600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"NSF","award":["1943623 and 1911149"],"award-info":[{"award-number":["1943623 and 1911149"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2020,11,13]]},"abstract":"<jats:p>\n            We present Hoogle+, a web-based API discovery tool for Haskell. A Hoogle+ user can specify a programming task using either a type, a set of input-output tests, or both. Given a specification, the tool returns a list of matching programs composed from functions in popular Haskell libraries, and annotated with automatically-generated examples of their behavior. These features of Hoogle+ are powered by three novel techniques. First, to enable efficient type-directed synthesis from tests only, we develop an algorithm that\n            <jats:italic>infers likely type specifications from tests<\/jats:italic>\n            . Second, to return high-quality programs even with ambiguous specifications, we develop a technique that automatically\n            <jats:italic>eliminates meaningless and repetitive synthesis results<\/jats:italic>\n            . Finally, we show how to extend this elimination technique to automatically\n            <jats:italic>generate informative inputs<\/jats:italic>\n            that can be used to demonstrate program behavior to the user. To evaluate the effectiveness of Hoogle+ compared with traditional API search techniques, we perform a user study with 30 participants of varying Haskell proficiency. The study shows that programmers equipped with Hoogle+ generally solve tasks faster and were able to solve 50% more tasks overall.\n          <\/jats:p>","DOI":"10.1145\/3428273","type":"journal-article","created":{"date-parts":[[2020,11,24]],"date-time":"2020-11-24T23:36:06Z","timestamp":1606260966000},"page":"1-27","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":17,"title":["Digging for fold: synthesis-aided API discovery for Haskell"],"prefix":"10.1145","volume":"4","author":[{"given":"Michael B.","family":"James","sequence":"first","affiliation":[{"name":"University of California at San Diego, USA"}]},{"given":"Zheng","family":"Guo","sequence":"additional","affiliation":[{"name":"University of California at San Diego, USA"}]},{"given":"Ziteng","family":"Wang","sequence":"additional","affiliation":[{"name":"University of California at San Diego, USA"}]},{"given":"Shivani","family":"Doshi","sequence":"additional","affiliation":[{"name":"University of California at San Diego, USA"}]},{"given":"Hila","family":"Peleg","sequence":"additional","affiliation":[{"name":"University of California at San Diego, USA"}]},{"given":"Ranjit","family":"Jhala","sequence":"additional","affiliation":[{"name":"University of California at San Diego, USA"}]},{"given":"Nadia","family":"Polikarpova","sequence":"additional","affiliation":[{"name":"University of California at San Diego, USA"}]}],"member":"320","published-online":{"date-parts":[[2020,11,13]]},"reference":[{"key":"e_1_2_2_1_1","first-page":"459","volume-title":"USA","author":"Chaudhuri Avik","year":"2011","unstructured":"Jong-hoon (David) An, Avik Chaudhuri , Jefrey S. Foster , and Michael Hicks . 2011 . Dynamic inference of static types for ruby. In POPL. Austin, TX , USA , January 26-28, 2011, Thomas Ball and Mooly Sagiv (Eds.). ACM , 459 - 472 . Jong-hoon (David) An, Avik Chaudhuri, Jefrey S. Foster, and Michael Hicks. 2011. Dynamic inference of static types for ruby. In POPL. Austin, TX, USA, January 26-28, 2011, Thomas Ball and Mooly Sagiv (Eds.). ACM, 459-472."},{"key":"e_1_2_2_2_1","unstructured":"Lennart Augusstson. 2005. Djinn. https:\/\/github.com\/augustss\/djinn.  Lennart Augusstson. 2005. Djinn. https:\/\/github.com\/augustss\/djinn."},{"key":"e_1_2_2_4_1","first-page":"963","article-title":"Rousillon: Scraping Distributed Hierarchical Web Data","volume":"2018","author":"Chasins Sarah E","year":"2018","unstructured":"Sarah E Chasins , Maria Mueller , and Rastislav Bodik . 2018 . Rousillon: Scraping Distributed Hierarchical Web Data . In UIST 2018. 963 - 975 . Sarah E Chasins, Maria Mueller, and Rastislav Bodik. 2018. Rousillon: Scraping Distributed Hierarchical Web Data. In UIST 2018. 963-975.","journal-title":"UIST"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/2908080.2908103"},{"key":"e_1_2_2_6_1","volume-title":"Type Inference with Run-time Logs. In Workshop on Scripts to Programs (STOP).","author":"Chugh Ravi","year":"2011","unstructured":"Ravi Chugh , Sorin Lerner , and Ranjit Jhala . 2011 . Type Inference with Run-time Logs. In Workshop on Scripts to Programs (STOP). Ravi Chugh, Sorin Lerner, and Ranjit Jhala. 2011. Type Inference with Run-time Logs. In Workshop on Scripts to Programs (STOP)."},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/351240.351266"},{"volume-title":"Mathematics of Program Construction (Lecture Notes in Computer Science)","author":"Danielsson Nils Anders","key":"e_1_2_2_8_1","unstructured":"Nils Anders Danielsson and Patrik Jansson . 2004. Chasing Bottoms . In Mathematics of Program Construction (Lecture Notes in Computer Science) , Dexter Kozen (Ed.). Springer , 85-109. Nils Anders Danielsson and Patrik Jansson. 2004. Chasing Bottoms. In Mathematics of Program Construction (Lecture Notes in Computer Science), Dexter Kozen (Ed.). Springer, 85-109."},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796800000861"},{"key":"e_1_2_2_10_1","first-page":"1","volume-title":"Wrex: A Unified Programming-by-Example Interaction for Synthesizing Readable Code for Data Scientists. In CHI","author":"Drosos Ian","year":"2020","unstructured":"Ian Drosos , Titus Barik , Philip J. Guo , Robert DeLine , and Sumit Gulwani . 2020 . Wrex: A Unified Programming-by-Example Interaction for Synthesizing Readable Code for Data Scientists. In CHI 2020. Association for Computing Machinery, New York, NY, USA , 1 - 12 . Ian Drosos, Titus Barik, Philip J. Guo, Robert DeLine, and Sumit Gulwani. 2020. Wrex: A Unified Programming-by-Example Interaction for Synthesizing Readable Code for Data Scientists. In CHI 2020. Association for Computing Machinery, New York, NY, USA, 1-12."},{"key":"e_1_2_2_11_1","volume-title":"Reps","author":"Feng Yu","year":"2017","unstructured":"Yu Feng , Ruben Martins , Yuepeng Wang , Isil Dillig , and Thomas W . Reps . 2017 . Component-based synthesis for complex APIs. In POPL 2017. Yu Feng, Ruben Martins, Yuepeng Wang, Isil Dillig, and Thomas W. Reps. 2017. Component-based synthesis for complex APIs. In POPL 2017."},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1926385.1926423"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/3371080"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462192"},{"key":"e_1_2_2_15_1","first-page":"303","volume-title":"Imperial","author":"Heineman George T.","year":"2016","unstructured":"George T. Heineman , Jan Bessai , Boris D\u00fcdder , and Jakob Rehof . 2016 . A Long and Winding Road Towards Modular Synthesis. In ISoLA 2016 , Imperial , Corfu, Greece , October 10-14, 2016, Proceedings, Part I. 303 - 317 . George T. Heineman, Jan Bessai, Boris D\u00fcdder, and Jakob Rehof. 2016. A Long and Winding Road Towards Modular Synthesis. In ISoLA 2016, Imperial, Corfu, Greece, October 10-14, 2016, Proceedings, Part I. 303-317."},{"key":"e_1_2_2_16_1","volume-title":"ICSE '10","author":"Jha Susmit","year":"1806","unstructured":"Susmit Jha , Sumit Gulwani , Sanjit A. Seshia , and Ashish Tiwari . 2010. Oracle-guided component-based program synthesis . In ICSE '10 , Vol. 1 . ACM Press , 215. http:\/\/portal.acm.org\/citation.cfm?doid= 1806 799. 1806833 Susmit Jha, Sumit Gulwani, Sanjit A. Seshia, and Ashish Tiwari. 2010. Oracle-guided component-based program synthesis. In ICSE '10, Vol. 1. ACM Press, 215. http:\/\/portal.acm.org\/citation.cfm?doid= 1806799. 1806833"},{"key":"e_1_2_2_17_1","unstructured":"Vu Le Daniel Perelman Oleksandr Polozov Mohammad Raza Abhishek Udupa and Sumit Gulwani. 2017. Interactive Program Synthesis. CoRR abs\/1703.03539 ( 2017 ). arXiv: 1703.03539 http:\/\/arxiv.org\/abs\/1703.03539  Vu Le Daniel Perelman Oleksandr Polozov Mohammad Raza Abhishek Udupa and Sumit Gulwani. 2017. Interactive Program Synthesis. CoRR abs\/1703.03539 ( 2017 ). arXiv: 1703.03539 http:\/\/arxiv.org\/abs\/1703.03539"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1065010.1065018"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/3341699"},{"key":"e_1_2_2_20_1","unstructured":"Neil Mitchell. 2004. Hoogle. https:\/\/www.haskell.org\/hoogle\/.  Neil Mitchell. 2004. Hoogle. https:\/\/www.haskell.org\/hoogle\/."},{"key":"e_1_2_2_21_1","first-page":"230","volume-title":"Dependently Typed Programming in Agda. In AFP 2008","author":"Norell Ulf","year":"2008","unstructured":"Ulf Norell . 2008 . Dependently Typed Programming in Agda. In AFP 2008 , Heijen, The Netherlands , May 2008, Revised Lectures. 230 - 266 . Ulf Norell. 2008. Dependently Typed Programming in Agda. In AFP 2008, Heijen, The Netherlands, May 2008, Revised Lectures. 230-266."},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180189"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/2254064.2254098"},{"volume-title":"Lattice Theoretic Properties of Subsumption","author":"Plotkin Gordon","key":"e_1_2_2_24_1","unstructured":"Gordon Plotkin . 1970. Lattice Theoretic Properties of Subsumption . Edinburgh University , Department of Machine Intelligence and Perception. https:\/\/books.google.com\/books?id=2p09cgAACAAJ Gordon Plotkin. 1970. Lattice Theoretic Properties of Subsumption. Edinburgh University, Department of Machine Intelligence and Perception. https:\/\/books.google.com\/books?id=2p09cgAACAAJ"},{"key":"e_1_2_2_25_1","first-page":"107","volume-title":"Flashmeta: A framework for inductive program synthesis. ACM SIGPLAN Notices 50, 10 ( 2015 )","author":"Polozov Oleksandr","year":"2015","unstructured":"Oleksandr Polozov and Sumit Gulwani . 2015 . Flashmeta: A framework for inductive program synthesis. ACM SIGPLAN Notices 50, 10 ( 2015 ) , 107 - 126 . Oleksandr Polozov and Sumit Gulwani. 2015. Flashmeta: A framework for inductive program synthesis. ACM SIGPLAN Notices 50, 10 ( 2015 ), 107-126."},{"key":"e_1_2_2_26_1","volume-title":"Code Completion with Statistical Language Models. SIGPLAN Not. 49, 6 (","author":"Raychev Veselin","year":"2014","unstructured":"Veselin Raychev , Martin Vechev , and Eran Yahav . 2014. Code Completion with Statistical Language Models. SIGPLAN Not. 49, 6 ( June 2014 ), 419-428. Veselin Raychev, Martin Vechev, and Eran Yahav. 2014. Code Completion with Statistical Language Models. SIGPLAN Not. 49, 6 ( June 2014 ), 419-428."},{"key":"e_1_2_2_27_1","unstructured":"John C. Reynolds. 1969. Transformational systems and the algebraic structure of atomic for-mulas.  John C. Reynolds. 1969. Transformational systems and the algebraic structure of atomic for-mulas."},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1411286.1411292"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-21690-4_23"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-62688-3_47"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/75277.75283"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428273","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3428273","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3428273","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T22:02:57Z","timestamp":1750197777000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428273"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,11,13]]},"references-count":30,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2020,11,13]]}},"alternative-id":["10.1145\/3428273"],"URL":"https:\/\/doi.org\/10.1145\/3428273","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2020,11,13]]},"assertion":[{"value":"2020-11-13","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}