Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture最新文献

筛选
英文 中文
Functional Shell and Reusable Components for Easy GUIs 用于简单gui的功能外壳和可重用组件
D. Knoble, Bogdan Popa
{"title":"Functional Shell and Reusable Components for Easy GUIs","authors":"D. Knoble, Bogdan Popa","doi":"10.1145/3609025.3609478","DOIUrl":"https://doi.org/10.1145/3609025.3609478","url":null,"abstract":"Some object-oriented GUI toolkits tangle state management with rendering. Functional shells and observable toolkits like GUI Easy simplify and promote the creation of reusable views by analogy to functional programming. We have successfully used GUI Easy on small and large GUI projects. We report on our experience constructing and using GUI Easy and derive from that experience several architectural patterns and principles for building functional programs out of imperative systems.","PeriodicalId":109131,"journal":{"name":"Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture","volume":"6 10 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2023-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115347713","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Types that Change: The Extensible Type Design Pattern 可更改的类型:可扩展类型设计模式
Ivan Perez
{"title":"Types that Change: The Extensible Type Design Pattern","authors":"Ivan Perez","doi":"10.1145/3609025.3609475","DOIUrl":"https://doi.org/10.1145/3609025.3609475","url":null,"abstract":"Compilers are often structured as chains of transformations, from source code to object code, through multiple intermediate representations. The existence of different representations of the same program presents challenges both for code maintenance and in terms of architecture. The types used to capture programs at multiple stages may be similar but not interchangeable, leading to code duplication. Methods to alleviate such duplication often lead to violations of software engineering principles of abstraction and encapsulation. This pearl discusses a design pattern where an algebraic data type (ADT) is extended with an argument type function that is applied to every component of the ADT. The resulting parametric type can be instantiated with multiple type functions, each providing a different feature. We demonstrate the versatility of this pattern by capturing notions of traceability and error recovery, and demonstrate that it can also be used to selectively modify existing types, as well as to extend them. Our proposal has been validated by applying it to a real-world use case with very good results.","PeriodicalId":109131,"journal":{"name":"Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture","volume":"169 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2023-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134030778","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Phases in Software Architecture 软件架构的各个阶段
J. Gibbons, Donnacha Oisín Kidney, T. Schrijvers, Nicolas Wu
{"title":"Phases in Software Architecture","authors":"J. Gibbons, Donnacha Oisín Kidney, T. Schrijvers, Nicolas Wu","doi":"10.1145/3609025.3609479","DOIUrl":"https://doi.org/10.1145/3609025.3609479","url":null,"abstract":"The large-scale structure of executing a computation can often be thought of as being separated into distinct phases. But the most natural form in which to specify that computation may well have a different and conflicting structure. For example, the computation might consist of gathering data from some locations, processing it, then distributing the results back to the same locations; it may be executed in three phases—gather, process, distribute—but mostly conveniently specified orthogonally—by location. We have recently shown that this multi-phase structure can be expressed as a novel applicative functor (also known as an idiom, or lax monoidal functor). Here we summarize the idea from the perspective of software architecture. At the end, we speculate about applications to choreography and multi-tier architecture.","PeriodicalId":109131,"journal":{"name":"Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture","volume":"85 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2023-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121635257","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
A Software Architecture Based on Coarse-Grained Self-Adjusting Computations 基于粗粒度自调整计算的软件体系结构
Stefan Wehr
{"title":"A Software Architecture Based on Coarse-Grained Self-Adjusting Computations","authors":"Stefan Wehr","doi":"10.1145/3609025.3609481","DOIUrl":"https://doi.org/10.1145/3609025.3609481","url":null,"abstract":"Ensuring that software applications present their users the most recent version of data is not trivial. Self-adjusting computations are a technique for automatically and efficiently recomputing output data whenever some input changes. This article describes the software architecture of a large, commercial software system built around a framework for coarse-grained self-adjusting computations in Haskell. It discusses advantages and disadvantages based on longtime experience. The article also presents a demo of the system and explains the API of the framework.","PeriodicalId":109131,"journal":{"name":"Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture","volume":"67 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2023-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126266717","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Stretching the Glasgow Haskell Compiler: Nourishing GHC with Domain-Driven Design 扩展格拉斯哥Haskell编译器:用领域驱动设计滋养GHC
Jeffrey M. Young, S. Henry, J. Ericson
{"title":"Stretching the Glasgow Haskell Compiler: Nourishing GHC with Domain-Driven Design","authors":"Jeffrey M. Young, S. Henry, J. Ericson","doi":"10.1145/3609025.3609476","DOIUrl":"https://doi.org/10.1145/3609025.3609476","url":null,"abstract":"Over the last decade Haskell has been productized; transitioning from a research language to an industrial strength language ready for large-scale systems. However, the literature on architecting such systems with a pure functional language is scarce. In this paper we contribute to that discourse, by using a large-scale system: the Glasgow Haskell Compiler (GHC), as a guide to more maintainable, flexible and effective, pure functional architectures. We describe, from experience, how GHC as a system, violates the desirable properties that make pure functional programming attractive: immutability, modularity, and composability. With these violations identified, we provide guidance for other functional system architectures; drawing heavily on Domain-Driven Design. We write from an engineering perspective, with the hope that our experience may provide insight into best practices for other pure functional software architects.","PeriodicalId":109131,"journal":{"name":"Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2023-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130861030","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Crème de la Crem: Composable Representable Executable Machines 奶油中的奶油:可组合的可执行机器
Marco Perone, G. Karachalias
{"title":"Crème de la Crem: Composable Representable Executable Machines","authors":"Marco Perone, G. Karachalias","doi":"10.1145/3609025.3609480","DOIUrl":"https://doi.org/10.1145/3609025.3609480","url":null,"abstract":"In this paper we describe how to build software architectures as a composition of state machines, using ideas and principles from the field of Domain-Driven Design. By definition, our approach is modular, allowing one to compose independent subcomponents to create bigger systems, and representable, allowing the implementation of a system to be kept in sync with its graphical representation. In addition to the design itself we introduce the Crem library, which provides a concrete state machine implementation that is both compositional and representable. Crem uses Haskell's advanced type-level features to allow users to specify allowed and forbidden state transitions, and to encode complex state machine---and therefore domain-specific---properties. Moreover, since Crem's state machines are representable, Crem can automatically generate graphical representations of systems from their domain implementations.","PeriodicalId":109131,"journal":{"name":"Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2023-07-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129954519","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Typed Design Patterns for the Functional Era 功能时代的类型化设计模式
Will Crichton
{"title":"Typed Design Patterns for the Functional Era","authors":"Will Crichton","doi":"10.1145/3609025.3609477","DOIUrl":"https://doi.org/10.1145/3609025.3609477","url":null,"abstract":"This paper explores how design patterns could be revisited in the era of mainstream functional programming languages. I discuss the kinds of knowledge that ought to be represented as functional design patterns: architectural concepts that are relatively self-contained, but whose entirety cannot be represented as a language-level abstraction. I present four concrete examples embodying this idea: the Witness, the State Machine, the Parallel Lists, and the Registry. Each pattern is implemented in Rust to demonstrate how careful use of a sophisticated type system can better model each domain construct and thereby catch user mistakes at compile-time.","PeriodicalId":109131,"journal":{"name":"Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture","volume":"76 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2023-07-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133114852","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture 第一届ACM SIGPLAN功能软件体系结构国际研讨会论文集
{"title":"Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture","authors":"","doi":"10.1145/3609025","DOIUrl":"https://doi.org/10.1145/3609025","url":null,"abstract":"","PeriodicalId":109131,"journal":{"name":"Proceedings of the 1st ACM SIGPLAN International Workshop on Functional Software Architecture","volume":"63 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127042159","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
相关产品
×
本文献相关产品
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信