[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"doc-detail-85913-en":3,"doc-seo-85913-105":29,"detail-sidebar-cat-0-en-105":90},{"code":4,"msg":5,"data":6},0,"success",{"doc_id":7,"user_id":8,"nickname":9,"user_avatar":10,"doc_module":4,"category_id":11,"category_name":12,"doc_title":13,"doc_description":14,"doc_content":15,"file_id":16,"file_url":17,"file_type":18,"file_size":19,"view_count":4,"is_deleted":4,"is_public":20,"is_downloadable":20,"audit_status":20,"page_count":21,"language":22,"language_code":23,"site_id":24,"html_lang":23,"table_of_contents":25,"faqs":26,"seo_title":13,"seo_description":14,"update_tm":27,"read_time":28},85913,7971461740886,"Theodore","https://ap-avatar.wpscdn.com/davatar_3d24733baf745e90a7e4bdd5f77d97b2",6,"Technology","CloudMicroHaskell: Direct-Style Distributed Haskell via Runtime Graph Serialisation","CloudMicroHaskell presents a new Cloud Haskell-style approach to distributed programming in Haskell by using MicroHaskell with a runtime that represents both code and data as a combinator graph. When a processor message crosses a node boundary, it serializes the reachable graph directly. This enables remote spawning in direct style, allowing process bodies to capture surrounding variables and transmit ordinary values, including functions, without manual closure conversion.","arXiv :2607 . 10443v1 [ cs .DC] 11 Jul 2026  \nCloudMicroHaskell  \nDirect-Style Distributed Haskell via Runtime Graph Serialisation  \nROBERT KROOK, Chalmers University of Technology and University of Gothenburg, Sweden LENNART AUGUSTSSON, Unaffiliated, Sweden  \nCloud Haskell brings Erlang-style distributed programming to Haskell, but its treatment of mobile code exposes a difficult boundary in the source-level API. Remote processes must be expressed as static closures, messages must satisfy serialisation constraints, and participating nodes are assumed to share the relevant code.  \nThis paper explores a different design point. We present CloudMicroHaskell, a Cloud Haskell-style library built on MicroHaskell, whose runtime represents both code and data as a combinator graph. When a processor message crosses a node boundary, CloudMicroHaskell serialises the reachable graph directly. As a result, remote spawning can be written in direct style: process bodies may capture variables from their surrounding scope, and messages may contain ordinary values, including functions, without programmer-written closure conversion.  \nWe describe the implementation of the CloudMicroHaskell node runtime, including remote spawn, message delivery, monitors, exit propagation, and library implementations of generic servers and supervisors. We evaluate the system with process/message benchmarks, a distributed work-pool benchmark, a file-synchronisation case study, and a heterogeneous deployment on microcontrollers. The results show that runtime graph serialisation makes the Cloud Haskell programming model substantially more direct, while also making the tradeoff explicit: some guarantees enforced by Cloud Haskell’s source-level types become dynamic checks, and programmers must be aware of laziness and runtime-owned resources when moving graphs between nodes.  \nCCS Concepts: • Networks → Programming interfaces; Network properties; • Computer systems organization → Embedded software; Dependable and fault-tolerant systems and networks; • Theory of computation → Self-organization; Concurrent algorithms.  \nAdditional Key Words and Phrases: Haskell, Distributed Haskell, Actor Model Concurrency, Concurrency, MicroHaskell, MicroHs, Serialisation, Graph Reduction, Combinators, Code Mobility  \nACM Reference Format:  \nRobert Krook and Lennart Augustsson. 2026. CloudMicroHaskell: Direct-Style Distributed Haskell via Runtime Graph Serialisation. In Proceedings of the 19th ACM SIGPLAN International Haskell Symposium (Haskell ’26), August 24–29, 2026, Indianapolis, IN, USA. ACM, New York, NY, USA, 31 pages. [https://doi.org/10.1145/3830439](https://doi.org/10.1145/3830439) . 3831272  \n1 Introduction  \nCloud Haskell [4] is a Haskell framework for writing distributed, concurrent programs in the style of Erlang. Erlang’s programming model emphasises concurrency, with lightweight processes that share no memory. Instead, inter-process communication is done via message passing. This  \nAuthors’ Contact Information: Robert Krook, Chalmers University of Technology and University of Gothenburg, Department of Computer Science and Engineering, Gothenburg, Sweden, [krookr@chalmers.se](krookr@chalmers.se); Lennart Augustsson, Unaffiliated, Gothenburg, Sweden, [lennart@augustsson.net](lennart@augustsson.net).  \nThis work is licensed under a Creative Commons Attribution 4 .0 International License.  \nHaskell ’26, Indianapolis, IN, USA  \n© 2026 Copyright held by the owner/author(s) .  \nACM ISBN 979-8-4007-2869-3/2026/08 [https://doi.org/10.1145/3830439.3831272](https://doi.org/10.1145/3830439.3831272)  \n, Vol. 1, No. 1, Article . Publication date: July 2026 .  \nprogramming model greatly aids in writing distributed programs that execute on and communicate over a network.  \nThe primary benefit of Cloud Haskell over Erlang is Haskell’s strong type system. With it, the API of Cloud Haskell can be described in a very clear and expressive way. It is short and (mostly) elegant. Furthermore, ","cbCaiuTtCJZjFxBN","https://ap.wps.com/l/cbCaiuTtCJZjFxBN","pdf",808619,1,31,"English","en",105,"# Introduction\n## Cloud Haskell and direct-style limitations\n## Static values and closure conversion\n## CloudMicroHaskell design: runtime graph serialization","[{\"question\":\"What limitation of Cloud Haskell is addressed by CloudMicroHaskell?\",\"answer\":\"Cloud Haskell requires remote processes to be expressed as static closures and transmitted messages to satisfy serialization constraints, assuming nodes share relevant code. This complicates a source-level direct-style API for mobile code.\"},{\"question\":\"How does CloudMicroHaskell enable remote spawning in direct style?\",\"answer\":\"CloudMicroHaskell’s runtime represents code and data as a combinator graph and serializes the reachable graph when messages cross node boundaries. As a result, process bodies can capture variables from their surrounding scope without programmer-written closure conversion.\"},{\"question\":\"What tradeoff does the runtime graph serialization introduce?\",\"answer\":\"Some guarantees enforced by Cloud Haskell’s source-level types become dynamic checks. Programmers must also account for laziness and resources owned by the runtime when moving graphs between nodes.\"}]",1784207139,78,{"code":4,"msg":30,"data":31},"ok",{"site_id":24,"language":23,"slug":32,"title":13,"keywords":33,"description":14,"schema_data":34,"social_meta":85,"head_meta":87,"extra_data":89,"updated_unix":27},"cloudmicrohaskell-direct-style-distributed-haskell-via-runtime-graph-serialisation","",{"@graph":35,"@context":84},[36,53,67],{"@type":37,"itemListElement":38},"BreadcrumbList",[39,43,47,50],{"item":40,"name":41,"@type":42,"position":20},"https://docshare.wps.com","Home","ListItem",{"item":44,"name":45,"@type":42,"position":46},"https://docshare.wps.com/document/","Document",2,{"item":48,"name":12,"@type":42,"position":49},"https://docshare.wps.com/document/technology/",3,{"item":51,"name":13,"@type":42,"position":52},"https://docshare.wps.com/document/cloudmicrohaskell-direct-style-distributed-haskell-via-runtime-graph-serialisation/85913/",4,{"url":51,"name":13,"@type":54,"author":55,"headline":13,"publisher":57,"fileFormat":60,"inLanguage":23,"description":14,"dateModified":61,"datePublished":61,"encodingFormat":60,"isAccessibleForFree":62,"interactionStatistic":63},"DigitalDocument",{"name":9,"@type":56},"Person",{"url":40,"name":58,"@type":59},"DocShare","Organization","application/pdf","2026-07-16",true,{"@type":64,"interactionType":65,"userInteractionCount":4},"InteractionCounter",{"@type":66},"ViewAction",{"@type":68,"mainEntity":69},"FAQPage",[70,76,80],{"name":71,"@type":72,"acceptedAnswer":73},"What limitation of Cloud Haskell is addressed by CloudMicroHaskell?","Question",{"text":74,"@type":75},"Cloud Haskell requires remote processes to be expressed as static closures and transmitted messages to satisfy serialization constraints, assuming nodes share relevant code. This complicates a source-level direct-style API for mobile code.","Answer",{"name":77,"@type":72,"acceptedAnswer":78},"How does CloudMicroHaskell enable remote spawning in direct style?",{"text":79,"@type":75},"CloudMicroHaskell’s runtime represents code and data as a combinator graph and serializes the reachable graph when messages cross node boundaries. As a result, process bodies can capture variables from their surrounding scope without programmer-written closure conversion.",{"name":81,"@type":72,"acceptedAnswer":82},"What tradeoff does the runtime graph serialization introduce?",{"text":83,"@type":75},"Some guarantees enforced by Cloud Haskell’s source-level types become dynamic checks. Programmers must also account for laziness and resources owned by the runtime when moving graphs between nodes.","https://schema.org",{"og:url":51,"og:type":86,"og:title":13,"og:site_name":58,"og:description":14},"article",{"robots":88,"canonical":51},"index,follow",{"doc_id":7,"site_id":24},{"code":4,"msg":5,"data":91},[92,96,100,104,109,112,117,122,127,130,134],{"id":20,"doc_module":4,"doc_module_name":45,"category_name":93,"show_sort_weight":94,"slug":95},"Story & Novel",90,"story-novel",{"id":46,"doc_module":4,"doc_module_name":45,"category_name":97,"show_sort_weight":98,"slug":99},"Literature",80,"literature",{"id":52,"doc_module":4,"doc_module_name":45,"category_name":101,"show_sort_weight":102,"slug":103},"Exam",70,"exam",{"id":105,"doc_module":4,"doc_module_name":45,"category_name":106,"show_sort_weight":107,"slug":108},5,"Comic",60,"comic",{"id":11,"doc_module":4,"doc_module_name":45,"category_name":12,"show_sort_weight":110,"slug":111},50,"technology",{"id":113,"doc_module":4,"doc_module_name":45,"category_name":114,"show_sort_weight":115,"slug":116},7,"Healthcare",40,"healthcare",{"id":118,"doc_module":4,"doc_module_name":45,"category_name":119,"show_sort_weight":120,"slug":121},8,"Research & Report",30,"research-report",{"id":123,"doc_module":4,"doc_module_name":45,"category_name":124,"show_sort_weight":125,"slug":126},9,"Religion & Spirituality",20,"religion-spirituality",{"id":125,"doc_module":4,"doc_module_name":45,"category_name":128,"show_sort_weight":125,"slug":129},"World Cup","world-cup",{"id":131,"doc_module":4,"doc_module_name":45,"category_name":132,"show_sort_weight":131,"slug":133},10,"Lifestyle","lifestyle",{"id":135,"doc_module":4,"doc_module_name":45,"category_name":136,"show_sort_weight":105,"slug":137},19,"General","general"]