{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,13]],"date-time":"2026-04-13T18:56:55Z","timestamp":1776106615486,"version":"3.50.1"},"reference-count":23,"publisher":"Association for Computing Machinery (ACM)","issue":"POPL","license":[{"start":{"date-parts":[[2024,1,2]],"date-time":"2024-01-02T00:00:00Z","timestamp":1704153600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by-nc-sa\/4.0\/"}],"funder":[{"name":"the National Key Research and Development Program of China","award":["2021ZD0110202"],"award-info":[{"award-number":["2021ZD0110202"]}]},{"name":"the Natural Science Foundation of Fujian Province for Youths","award":["2021J05230"],"award-info":[{"award-number":["2021J05230"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,1,2]]},"abstract":"<jats:p>Bidirectional live programming systems (BLP) enable developers to modify a program by directly manipulating the program output, so that the updated program can produce the manipulated output. One state-of-the-art approach to BLP systems is operation-based, which captures the developer's intention of program modifications by taking how the developer manipulates the output into account. The program modifications are usually hard coded for each direct manipulation in these BLP systems, which are difficult to extend. Moreover, to reflect the manipulations to the source program, these BLP systems trace the modified output to appropriate code fragments and perform corresponding code transformations. Accordingly, they require direct manipulation users be aware of the source code and how it is changed, making \u201cdirect\u201d manipulation (on output) be \u201cindirect\u201d.<\/jats:p>\n          <jats:p>\n            In this paper, we resolve this problem by presenting a novel operation-based framework for bidirectional live programming, which can automatically fuse direct manipulations into the source code, thus supporting code-insensitive direct manipulations. Firstly, we design a simple but expressive delta language\n            <jats:italic toggle=\"yes\">DM<\/jats:italic>\n            capable of expressing common direct manipulations for output values. Secondly, we present a fusion algorithm that propagates direct manipulations into the source functional programs and applies them to the constants whenever possible; otherwise, the algorithm embeds manipulations into the \u201cproper positions\u201d of programs. We prove the correctness of the fusion algorithm that the updated program executes to get the manipulated output. To demonstrate the expressiveness of\n            <jats:italic toggle=\"yes\">DM<\/jats:italic>\n            and the effectiveness of our fusion algorithm, we have implemented FuseDM, a prototype SVG editor that supports GUI-based operations for direct manipulation, and successfully designed 14 benchmark examples starting from blank code using FuseDM.\n          <\/jats:p>","DOI":"10.1145\/3632883","type":"journal-article","created":{"date-parts":[[2024,1,5]],"date-time":"2024-01-05T20:48:51Z","timestamp":1704487731000},"page":"1211-1238","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":5,"title":["Fusing Direct Manipulations into Functional Programs"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0009-0008-2565-7769","authenticated-orcid":false,"given":"Xing","family":"Zhang","sequence":"first","affiliation":[{"name":"Peking University, Beijing, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7201-1954","authenticated-orcid":false,"given":"Ruifeng","family":"Xie","sequence":"additional","affiliation":[{"name":"Peking University, Beijing, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0007-0690-2119","authenticated-orcid":false,"given":"Guanchen","family":"Guo","sequence":"additional","affiliation":[{"name":"Peking University, Beijing, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3000-0795","authenticated-orcid":false,"given":"Xiao","family":"He","sequence":"additional","affiliation":[{"name":"University of Science and Technology Beijing, Beijing, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0006-3581-5324","authenticated-orcid":false,"given":"Tao","family":"Zan","sequence":"additional","affiliation":[{"name":"Longyan University, Longyan, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9034-205X","authenticated-orcid":false,"given":"Zhenjiang","family":"Hu","sequence":"additional","affiliation":[{"name":"Peking University, Beijing, China"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2024,1,5]]},"reference":[{"key":"e_1_3_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/319628.319634"},{"key":"e_1_3_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/141478.141494"},{"key":"e_1_3_1_4_1","doi-asserted-by":"publisher","unstructured":"Ravi Chugh Brian Hempel Mitchell Spradlin Jacob Albers. 2016. Programmatic and direct manipulation together at last. Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation (Jun 2016). https:\/\/doi.org\/10.1145\/2908080.2908103 10.1145\/2908080.2908103","DOI":"10.1145\/2908080.2908103"},{"key":"e_1_3_1_5_1","unstructured":"Evan Czaplicki. 2012. Elm: A delightful language for reliable webapps. https:\/\/elm-lang.org\/ Accessed: 2023-07-04."},{"key":"e_1_3_1_6_1","doi-asserted-by":"publisher","unstructured":"Krzysztof Czarnecki Nate Foster Zhenjiang Hu Ralf L\u00e4mmel Andy Sch\u00fcrr James Terwilliger. 2009. Bidirectional Transformations: A Cross-Discipline Perspective Vol. 5563. 260\u2013283. https:\/\/doi.org\/10.1007\/978-3-642-02408-5_19 10.1007\/978-3-642-02408-5_19","DOI":"10.1007\/978-3-642-02408-5_19"},{"key":"e_1_3_1_7_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-13688-7_5"},{"key":"e_1_3_1_8_1","doi-asserted-by":"publisher","DOI":"10.5555\/2050655.2050685"},{"key":"e_1_3_1_9_1","doi-asserted-by":"publisher","unstructured":"J. Nathan Foster Michael B. Greenwald Jonathan T. Moore Benjamin C. Pierce Alan Schmitt. 2007. Combinators for Bidirectional Tree Transformations: A Linguistic Approach to the View-Update Problem. 29 3 (may 2007) 17\u2013es. https:\/\/doi.org\/10.1145\/1232420.1232424 10.1145\/1232420.1232424","DOI":"10.1145\/1232420.1232424"},{"key":"e_1_3_1_10_1","doi-asserted-by":"publisher","unstructured":"Koumei Fukahori Daisuke Sakamoto Jun Kato Takeo Igarashi. 2014. CapStudio: An Interactive Screencast for Visual Application Development. Conference on Human Factors in Computing Systems - Proceedings. https:\/\/doi.org\/10.1145\/2559206.2581138 10.1145\/2559206.2581138","DOI":"10.1145\/2559206.2581138"},{"key":"e_1_3_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/2984511.2984575"},{"key":"e_1_3_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/3332165.3347925"},{"key":"e_1_3_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2103656.2103715"},{"key":"e_1_3_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276497"},{"key":"e_1_3_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1412331.1412334"},{"key":"e_1_3_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/1190216.1190241"},{"key":"e_1_3_1_17_1","unstructured":"Armando Solar-Lezama. 2008. Program synthesis by sketching. University of California Berkeley."},{"key":"e_1_3_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/224164.224221"},{"key":"e_1_3_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/2858965.2814271"},{"key":"e_1_3_1_20_1","unstructured":"H. von Koch. 1904. Sur une courbe continue sans tangente obtenue par une construction geometrique elementaire. Norstedt & soner. https:\/\/books.google.com.hk\/books?id=kf3NnQAACAAJ"},{"key":"e_1_3_1_21_1","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(90)90147-A"},{"key":"e_1_3_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/3586035"},{"key":"e_1_3_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/3510003.3510195"},{"key":"e_1_3_1_24_1","doi-asserted-by":"publisher","unstructured":"Xing Zhang Ruifeng Xie Guanchen Guo Xiao He Tao Zan Zhenjiang Hu. 2023b. FuseDM. https:\/\/doi.org\/10.5281\/zenodo.8419913 10.5281\/zenodo.8419913","DOI":"10.5281\/zenodo.8419913"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3632883","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3632883","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,7,4]],"date-time":"2025-07-04T20:06:21Z","timestamp":1751659581000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3632883"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,1,2]]},"references-count":23,"journal-issue":{"issue":"POPL","published-print":{"date-parts":[[2024,1,2]]}},"alternative-id":["10.1145\/3632883"],"URL":"https:\/\/doi.org\/10.1145\/3632883","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,1,2]]},"assertion":[{"value":"2024-01-05","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}