{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,11]],"date-time":"2026-01-11T20:38:39Z","timestamp":1768163919745,"version":"3.49.0"},"publisher-location":"Cham","reference-count":28,"publisher":"Springer Nature Switzerland","isbn-type":[{"value":"9783031997501","type":"print"},{"value":"9783031997518","type":"electronic"}],"license":[{"start":{"date-parts":[[2025,10,1]],"date-time":"2025-10-01T00:00:00Z","timestamp":1759276800000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"},{"start":{"date-parts":[[2025,10,1]],"date-time":"2025-10-01T00:00:00Z","timestamp":1759276800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2026]]},"DOI":"10.1007\/978-3-031-99751-8_5","type":"book-chapter","created":{"date-parts":[[2025,10,1]],"date-time":"2025-10-01T01:17:35Z","timestamp":1759281455000},"page":"93-114","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":1,"title":["Functional Reactive GUI Programming with\u00a0Modal Types"],"prefix":"10.1007","author":[{"given":"Jean-Claude","family":"Disch","sequence":"first","affiliation":[]},{"given":"Asger","family":"Heegaard","sequence":"additional","affiliation":[]},{"given":"Patrick","family":"Bahr","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2025,10,1]]},"reference":[{"key":"5_CR1","unstructured":"Apfelmus, H.: Reactive Banana (2011). https:\/\/wiki.haskell.org\/Reactive-banana"},{"key":"5_CR2","unstructured":"Apfelmus, H.: Threepenny GUI (2013). https:\/\/wiki.haskell.org\/Threepenny-gui"},{"key":"5_CR3","unstructured":"Apple Inc.: Combine. https:\/\/developer.apple.com\/documentation\/Combine"},{"key":"5_CR4","unstructured":"Apple Inc.: SwiftUI. https:\/\/developer.apple.com\/documentation\/SwiftUI"},{"key":"5_CR5","doi-asserted-by":"publisher","unstructured":"Bahr, P., Graulund, C.U., M\u00f8gelberg, R.E.: Simply RaTT: a fitch-style modal calculus for reactive programming without space leaks. Proc. ACM Program. Lang. 3(ICFP), 109:1\u2013109:27 (2019). https:\/\/doi.org\/10.1145\/3341713","DOI":"10.1145\/3341713"},{"key":"5_CR6","doi-asserted-by":"publisher","unstructured":"Bahr, P., Graulund, C.U., M\u00f8gelberg, R.E.: Diamonds are not forever: liveness in reactive programming with guarded recursion. Proc. ACM Program. Lang. 5(POPL), 2:1\u20132:28 (2021). https:\/\/doi.org\/10.1145\/3434283","DOI":"10.1145\/3434283"},{"key":"5_CR7","doi-asserted-by":"crossref","unstructured":"Bahr, P., Houlborg, E., R\u00f8rdam, G.T.S.: Asynchronous reactive programming with modal types in Haskell. In: Gebser, M., Sergey, I. (eds.) Practical Aspects of Declarative Languages (2024)","DOI":"10.1007\/978-3-031-52038-9_2"},{"key":"5_CR8","doi-asserted-by":"publisher","unstructured":"Bahr, P., M\u00f8gelberg, R.E.: Asynchronous modal FRP. Proc. ACM Program. Lang. 7(ICFP), 205:476\u2013205:510 (2023). https:\/\/doi.org\/10.1145\/3607847","DOI":"10.1145\/3607847"},{"key":"5_CR9","doi-asserted-by":"publisher","unstructured":"Cave, A., Ferreira, F., Panangaden, P., Pientka, B.: Fair reactive programming. In: Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 361\u2013372. ACM (2014). https:\/\/doi.org\/10.1145\/2535838.2535881","DOI":"10.1145\/2535838.2535881"},{"key":"5_CR10","unstructured":"Courtney, A., Elliott, C.: Genuinely functional user interfaces. In: Haskell Workshop (2001)"},{"issue":"6","key":"5_CR11","doi-asserted-by":"publisher","first-page":"411","DOI":"10.1145\/2499370.2462161","volume":"48","author":"E Czaplicki","year":"2013","unstructured":"Czaplicki, E., Chong, S.: Asynchronous functional reactive programming for GUIs. ACM SIGPLAN Not. 48(6), 411\u2013422 (2013). https:\/\/doi.org\/10.1145\/2499370.2462161","journal-title":"ACM SIGPLAN Not."},{"key":"5_CR12","doi-asserted-by":"publisher","unstructured":"Elliott, C., Hudak, P.: Functional reactive animation. In: Proceedings of the second ACM SIGPLAN International Conference on Functional Programming, pp. 263\u2013273. Association for Computing Machinery (1997). https:\/\/doi.org\/10.1145\/258948.258973","DOI":"10.1145\/258948.258973"},{"key":"5_CR13","doi-asserted-by":"publisher","unstructured":"Elliott, C.M.: Push-pull functional reactive programming. In: Proceedings of the 2nd ACM SIGPLAN Symposium on Haskell, pp. 25\u201336. ACM (2009). https:\/\/doi.org\/10.1145\/1596638.1596643","DOI":"10.1145\/1596638.1596643"},{"key":"5_CR14","unstructured":"Google: Jetpack Compose. https:\/\/developer.android.com\/compose"},{"key":"5_CR15","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"289","DOI":"10.1007\/978-3-030-71995-1_15","volume-title":"Foundations of Software Science and Computation Structures","author":"CU Graulund","year":"2021","unstructured":"Graulund, C.U., Szamozvancev, D., Krishnaswami, N.: Adjoint reactive GUI programming. In: FOSSACS 2021. LNCS, vol. 12650, pp. 289\u2013309. Springer, Cham (2021). https:\/\/doi.org\/10.1007\/978-3-030-71995-1_15"},{"key":"5_CR16","unstructured":"Houlborg, E., R\u00f8rdam, G., Bahr, P., Disch, J.C., Heegaard, A.: WidgetRattus (2024). https:\/\/hackage.haskell.org\/package\/WidgetRattus. https:\/\/hackage.haskell.org\/package\/WidgetRattus"},{"key":"5_CR17","doi-asserted-by":"publisher","unstructured":"Jeffrey, A.: LTL types FRP: linear-time temporal logic propositions as types, proofs as functional reactive programs. In: Proceedings of the Sixth Workshop on Programming Languages Meets Program Verification. ACM (2012). https:\/\/doi.org\/10.1145\/2103776.2103783","DOI":"10.1145\/2103776.2103783"},{"key":"5_CR18","doi-asserted-by":"publisher","unstructured":"Jeltsch, W.: Towards a common categorical semantics for linear-time temporal logic and functional reactive programming. Electron. Notes Theor. Comput. Sci. 286, 229\u2013242 (2012). https:\/\/doi.org\/10.1016\/j.entcs.2012.08.015. https:\/\/www.sciencedirect.com\/science\/article\/pii\/S157106611200045X","DOI":"10.1016\/j.entcs.2012.08.015"},{"key":"5_CR19","doi-asserted-by":"publisher","unstructured":"Jeltsch, W.: Temporal logic with \u201cUntil\u201d, functional reactive programming with processes, and concrete process categories. In: Proceedings of the 7th Workshop on Programming Languages Meets Program Verification, pp. 69\u201378. Association for Computing Machinery (2013). https:\/\/doi.org\/10.1145\/2428116.2428128","DOI":"10.1145\/2428116.2428128"},{"key":"5_CR20","unstructured":"Kiss, E.: 7GUIs: A GUI programming benchmark (2014). https:\/\/eugenkiss.github.io\/7guis\/tasks"},{"key":"5_CR21","doi-asserted-by":"publisher","unstructured":"Krishnaswami, N.R.: Higher-order functional reactive programming without spacetime leaks. In: Proceedings of the 18th ACM SIGPLAN International Conference on Functional Programming, pp. 221\u2013232. ACM (2013). https:\/\/doi.org\/10.1145\/2500365.2500588","DOI":"10.1145\/2500365.2500588"},{"key":"5_CR22","doi-asserted-by":"publisher","unstructured":"Krishnaswami, N.R., Benton, N.: A semantic model for graphical user interfaces. In: Proceedings of the 16th ACM SIGPLAN International Conference on Functional Programming, pp. 45\u201357. Association for Computing Machinery (2011). https:\/\/doi.org\/10.1145\/2034773.2034782","DOI":"10.1145\/2034773.2034782"},{"key":"5_CR23","doi-asserted-by":"publisher","unstructured":"Krishnaswami, N.R., Benton, N., Hoffmann, J.: Higher-order functional reactive programming in bounded space. In: Proceedings of the 39th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 45\u201358. ACM (2012). https:\/\/doi.org\/10.1145\/2103656.2103665","DOI":"10.1145\/2103656.2103665"},{"key":"5_CR24","doi-asserted-by":"publisher","unstructured":"Krishnaswami, N., Benton, N.: Ultrametric semantics of reactive programs. In: 26th Annual IEEE Symposium on Logic in Computer Science (LICS), pp. 257\u2013266 (2011). https:\/\/doi.org\/10.1109\/LICS.2011.38","DOI":"10.1109\/LICS.2011.38"},{"key":"5_CR25","doi-asserted-by":"publisher","unstructured":"Nilsson, H., Courtney, A., Peterson, J.: Functional reactive programming, continued. In: Proceedings of the 2002 ACM SIGPLAN Workshop on Haskell, pp. 51\u201364. ACM (2002). https:\/\/doi.org\/10.1145\/581690.581695","DOI":"10.1145\/581690.581695"},{"key":"5_CR26","doi-asserted-by":"publisher","unstructured":"Ploeg, A.V.D., Claessen, K.: Practical principled FRP: forget the past, change the future, FRPNow! In: Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, pp. 302\u2013314. Association for Computing Machinery (2015). https:\/\/doi.org\/10.1145\/2784731.2784752","DOI":"10.1145\/2784731.2784752"},{"issue":"9","key":"5_CR27","doi-asserted-by":"publisher","first-page":"106","DOI":"10.1145\/357766.351250","volume":"35","author":"M Sage","year":"2000","unstructured":"Sage, M.: FranTk - a declarative GUI language for Haskell. SIGPLAN Not. 35(9), 106\u2013117 (2000). https:\/\/doi.org\/10.1145\/357766.351250","journal-title":"SIGPLAN Not."},{"key":"5_CR28","unstructured":"Vallarino, F.: Monomer (2018). https:\/\/hackage.haskell.org\/package\/monomer"}],"updated-by":[{"DOI":"10.1007\/978-3-031-99751-8_23","type":"correction","label":"Correction","source":"publisher","updated":{"date-parts":[[2025,10,1]],"date-time":"2025-10-01T00:00:00Z","timestamp":1759276800000}}],"container-title":["Lecture Notes in Computer Science","Trends in Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-031-99751-8_5","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,11,28]],"date-time":"2025-11-28T20:22:10Z","timestamp":1764361330000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-031-99751-8_5"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,10,1]]},"ISBN":["9783031997501","9783031997518"],"references-count":28,"URL":"https:\/\/doi.org\/10.1007\/978-3-031-99751-8_5","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,10,1]]},"assertion":[{"value":"1 October 2025","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"1 October 2025","order":2,"name":"change_date","label":"Change Date","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"Correction","order":3,"name":"change_type","label":"Change Type","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"A correction has been published.","order":4,"name":"change_details","label":"Change Details","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"TFP","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Symposium on Trends in Functional Programming","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Oxford","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"United Kingdom","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2025","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"14 January 2025","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"16 January 2025","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"26","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"tfp2025","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/trendsfp.github.io\/index.html","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}