{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,10]],"date-time":"2025-10-10T00:57:28Z","timestamp":1760057848502,"version":"build-2065373602"},"reference-count":31,"publisher":"MDPI AG","issue":"3","license":[{"start":{"date-parts":[[2025,2,24]],"date-time":"2025-02-24T00:00:00Z","timestamp":1740355200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"Natural Science Foundation of Fujian Province for Youths","award":["2021J05230","LB2020010"],"award-info":[{"award-number":["2021J05230","LB2020010"]}]},{"name":"Doctor-Initiated Research Fund of Longyan University","award":["2021J05230","LB2020010"],"award-info":[{"award-number":["2021J05230","LB2020010"]}]}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Information"],"abstract":"<jats:p>Bidirectional live programming is a programming paradigm that enhances the developer experience by allowing direct modifications to the output, with changes instantly reflected back to the source program. Existing operation-based approaches allow modifying the constant values and expressions of programs, while they lack control over modifications originating from multiple updatable locations. To control the updatability of the source program, our approach introduces non-updatable expressions, which guide the fusion of updates to the intended locations. The correctness properties, GetPut and WeakPutGet, ensure output consistency. We have implemented a prototype, FuseSVG, and tested it with 14 nontrivial SVG-drawing benchmarks, demonstrating the effectiveness of our approach.<\/jats:p>","DOI":"10.3390\/info16030169","type":"journal-article","created":{"date-parts":[[2025,2,24]],"date-time":"2025-02-24T10:52:47Z","timestamp":1740394367000},"page":"169","update-policy":"https:\/\/doi.org\/10.3390\/mdpi_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Intentionally Fusing Direct Manipulations into SVG Programs"],"prefix":"10.3390","volume":"16","author":[{"ORCID":"https:\/\/orcid.org\/0009-0006-3581-5324","authenticated-orcid":false,"given":"Tao","family":"Zan","sequence":"first","affiliation":[{"name":"School of Mathematics and Information Engineering, Longyan University, Longyan 364012, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Xing","family":"Zhang","sequence":"additional","affiliation":[{"name":"School of Computer Science, Peking University, Beijing 100871, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Xiao","family":"He","sequence":"additional","affiliation":[{"name":"School of Computer and Communication Engineering, University of Science and Technology of Beijing, Beijing 100083, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Zhenjiang","family":"Hu","sequence":"additional","affiliation":[{"name":"School of Computer Science, Peking University, Beijing 100871, China"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"1968","published-online":{"date-parts":[[2025,2,24]]},"reference":[{"key":"ref_1","doi-asserted-by":"crossref","unstructured":"McDirmid, S. (2007, January 21\u201325). Living it up with a live programming language. Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications, OOPSLA \u201907, Montreal, QC, Canada.","DOI":"10.1145\/1297027.1297073"},{"key":"ref_2","doi-asserted-by":"crossref","first-page":"95","DOI":"10.1145\/2499370.2462170","article-title":"It\u2019s alive! continuous feedback in UI programming","volume":"48","author":"Burckhardt","year":"2013","journal-title":"SIGPLAN Not."},{"key":"ref_3","unstructured":"McDirmid, S. (,  2016). The promise of live programming. Proceedings of the 2nd International Workshop on Live Programming, LIVE, Rome, Italy."},{"key":"ref_4","doi-asserted-by":"crossref","unstructured":"Chugh, R., Hempel, B., Spradlin, M., and Albers, J. (2016, January 13\u201317). Programmatic and direct manipulation, together at last. Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, Santa Barbara, CA, USA.","DOI":"10.1145\/2908080.2908103"},{"key":"ref_5","doi-asserted-by":"crossref","unstructured":"Shneiderman (1983). Direct Manipulation: A Step Beyond Programming Languages. Computer, 16, 57\u201369.","DOI":"10.1109\/MC.1983.1654471"},{"key":"ref_6","doi-asserted-by":"crossref","unstructured":"Hempel, B., and Chugh, R. (2016, January 16\u201319). Semi-Automated SVG Programming via Direct Manipulation. Proceedings of the 29th Annual Symposium on User Interface Software and Technology, UIST \u201916, Tokyo, Japan.","DOI":"10.1145\/2984511.2984575"},{"key":"ref_7","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/3276497","article-title":"Bidirectional Evaluation with Direct Manipulation","volume":"2","author":"Mayer","year":"2018","journal-title":"Proc. ACM Program. Lang."},{"key":"ref_8","doi-asserted-by":"crossref","unstructured":"Hempel, B., Lubin, J., and Chugh, R. (2019, January 20\u201323). Sketch-n-Sketch: Output-Directed Programming for SVG. Proceedings of the 32nd Annual ACM Symposium on User Interface Software and Technology, UIST \u201919, New Orleans, LA, USA.","DOI":"10.1145\/3332165.3347925"},{"key":"ref_9","doi-asserted-by":"crossref","first-page":"1211","DOI":"10.1145\/3632883","article-title":"Fusing Direct Manipulations into Functional Programs","volume":"8","author":"Zhang","year":"2024","journal-title":"Proc. ACM Program. Lang."},{"key":"ref_10","doi-asserted-by":"crossref","unstructured":"Paige, R.F. (2009). Bidirectional Transformations: A Cross-Discipline Perspective. Theory and Practice of Model Transformations, Springer.","DOI":"10.1007\/978-3-642-02408-5"},{"key":"ref_11","doi-asserted-by":"crossref","unstructured":"Foster, J.N., Greenwald, M.B., Moore, J.T., Pierce, B.C., and Schmitt, A. (2005, January 12\u201314). Combinators for Bi-Directional Tree Transformations: A Linguistic Approach to the View Update Problem. Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL \u201905, Long Beach, CA, USA.","DOI":"10.1145\/1040305.1040325"},{"key":"ref_12","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1007\/s11432-015-5316-8","article-title":"The essence of bidirectional programming","volume":"58","author":"Fischer","year":"2015","journal-title":"Sci. China Inf. Sci."},{"key":"ref_13","doi-asserted-by":"crossref","unstructured":"Hofmann, M., Pierce, B., and Wagner, D. (2011, January 26\u201328). Symmetric Lenses. Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL \u201911, Austin, TX, USA.","DOI":"10.1145\/1926385.1926428"},{"key":"ref_14","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/3158129","article-title":"An Axiomatic Basis for Bidirectional Programming","volume":"2","author":"Ko","year":"2017","journal-title":"Proc. ACM Program. Lang."},{"key":"ref_15","doi-asserted-by":"crossref","unstructured":"Barbosa, D.M., Cretin, J., Foster, N., Greenberg, M., and Pierce, B.C. (2010, January 27\u201329). Matching Lenses: Alignment and View Update. Proceedings of the 15th ACM SIGPLAN International Conference on Functional Programming, ICFP \u201910, Baltimore, MD, USA.","DOI":"10.1145\/1863543.1863572"},{"key":"ref_16","doi-asserted-by":"crossref","first-page":"89","DOI":"10.1007\/s10990-008-9025-5","article-title":"A programmable editor for developing structured documents based on bidirectional transformations","volume":"21","author":"Hu","year":"2008","journal-title":"High.-Order Symb. Comput."},{"key":"ref_17","doi-asserted-by":"crossref","first-page":"423","DOI":"10.1007\/s00354-019-00082-y","article-title":"Unifying Parsing and Reflective Printing for Fully Disambiguated Grammars","volume":"38","author":"Zhu","year":"2020","journal-title":"New Gener. Comput."},{"key":"ref_18","doi-asserted-by":"crossref","unstructured":"Hidaka, S., Hu, Z., Inaba, K., Kato, H., Matsuda, K., and Nakano, K. (2010, January 27\u201329). Bidirectionalizing Graph Transformations. Proceedings of the 15th ACM SIGPLAN International Conference on Functional Programming, ICFP \u201910, Baltimore, MD, USA.","DOI":"10.1145\/1863543.1863573"},{"key":"ref_19","doi-asserted-by":"crossref","unstructured":"Hidaka, S., Asada, K., Hu, Z., Kato, H., and Nakano, K. (2013, January 25\u201327). Structural Recursion for Querying Ordered Graphs. Proceedings of the 18th ACM SIGPLAN International Conference on Functional Programming, ICFP \u201913, Boston, MA, USA.","DOI":"10.1145\/2500365.2500608"},{"key":"ref_20","doi-asserted-by":"crossref","first-page":"726","DOI":"10.14778\/3377369.3377380","article-title":"Programmable View Update Strategies on Relations","volume":"13","author":"Tran","year":"2020","journal-title":"Proc. VLDB Endow."},{"key":"ref_21","doi-asserted-by":"crossref","first-page":"173","DOI":"10.1007\/s00354-018-0033-7","article-title":"FliPpr: A System for Deriving Parsers from Pretty-Printers","volume":"36","author":"Matsuda","year":"2018","journal-title":"New Gener. Comput."},{"key":"ref_22","doi-asserted-by":"crossref","first-page":"3:1","DOI":"10.5381\/jot.2017.16.1.a3","article-title":"On principles of Least Change and Least Surprise for bidirectional transformations","volume":"16","author":"Cheney","year":"2017","journal-title":"J. Object Technol."},{"key":"ref_23","doi-asserted-by":"crossref","unstructured":"Zhang, X., and Hu, Z. (2022, January 22\u201327). Towards Bidirectional Live Programming for Incomplete Programs. Proceedings of the 44th International Conference on Software Engineering, ICSE \u201922, Pittsburgh, PA, USA.","DOI":"10.1145\/3510003.3510195"},{"key":"ref_24","doi-asserted-by":"crossref","first-page":"230","DOI":"10.1145\/3586035","article-title":"Bidirectional Object-Oriented Programming: Towards Programmatic and Direct Manipulation of Objects","volume":"7","author":"Zhang","year":"2023","journal-title":"Proc. ACM Program. Lang."},{"key":"ref_25","doi-asserted-by":"crossref","unstructured":"Ko, H.S., Zan, T., and Hu, Z. (2016, January 18\u201319). BiGUL: A formally verified core language for putback-based bidirectional programming. Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM \u201916, St. Petersburg, FL, USA.","DOI":"10.1145\/2847538.2847544"},{"key":"ref_26","doi-asserted-by":"crossref","unstructured":"Hu, Z., and Ko, H.S. (2018). Principles and practice of bidirectional programming in BiGUL. Bidirectional Transformations: International Summer School, Oxford, UK, July 25\u201329, 2016, Tutorial Lectures, Springer.","DOI":"10.1007\/978-3-319-79108-1_4"},{"key":"ref_27","unstructured":"Jackiw, R.N., and Finzer, W.F. (1993). The geometer\u2019s sketchpad: Programming by geometry. Watch What I Do: Programming by Demonstration, MIT Press."},{"key":"ref_28","doi-asserted-by":"crossref","unstructured":"Xia, H., Araujo, B., Grossman, T., and Wigdor, D. (2016, January 7\u201312). Object-Oriented Drawing. Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems, CHI \u201916, San Jose, CA, USA.","DOI":"10.1145\/2858036.2858075"},{"key":"ref_29","doi-asserted-by":"crossref","unstructured":"Jacobs, J., Gogia, S., Mundefinedch, R., and Brandt, J.R. (2017, January 6\u201311). Supporting Expressive Procedural Art Creation through Direct Manipulation. Proceedings of the 2017 CHI Conference on Human Factors in Computing Systems, CHI \u201917, Denver, CO, USA.","DOI":"10.1145\/3025453.3025927"},{"key":"ref_30","unstructured":"Schachman, T. (2025, February 17). Apparatus. Available online: http:\/\/aprt.us."},{"key":"ref_31","unstructured":"Bricault, S. (2025, February 17). Recursive Drawing. Available online: http:\/\/bricault.mit.edu\/recursive-drawing."}],"container-title":["Information"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.mdpi.com\/2078-2489\/16\/3\/169\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T16:41:43Z","timestamp":1760028103000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.mdpi.com\/2078-2489\/16\/3\/169"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,2,24]]},"references-count":31,"journal-issue":{"issue":"3","published-online":{"date-parts":[[2025,3]]}},"alternative-id":["info16030169"],"URL":"https:\/\/doi.org\/10.3390\/info16030169","relation":{},"ISSN":["2078-2489"],"issn-type":[{"type":"electronic","value":"2078-2489"}],"subject":[],"published":{"date-parts":[[2025,2,24]]}}}