开源软件名称(OpenSource Name):graninas/Functional-Design-and-Architecture开源软件地址(OpenSource Url):https://github.com/graninas/Functional-Design-and-Architecture开源编程语言(OpenSource Language):Haskell 96.8%开源软件介绍(OpenSource Introduction):Functional Design and ArchitectureCode and materials for my book "Functional Design and Architecture" (1st and 2nd editions)
What this book is about?The book is focusing on these topics:
References listAccompanying projectsThe Andromeda projectThis is the first project created specially for the book. It demonstrates the ideas from the book in a standalone application simulating a SCADA system for spaceships. N.B. The project is quite outdated. Haskell has changed a lot since then. I'm working on its resurrection currently. The Hydra projectThe Hydra project is the second project created for the book. It's a framework similar to the Node framework for building multithreaded and concurrent applications in Haskell using the approaches and patterns from the book. It's interesting that the project has three different engines: Final Tagless, Free Monad and Church Encoded Free Monad, - and you can see the differences between these approaches by checking the different implementations of the same application. Real-world applications of the ideas from the bookJuspay's Haskell EulerHS frameworkThis is a modern, full-fledged Free monad based Haskell framework for building web backends and console applications built by me and my team. EulerHS is an "older brother" of the Hydra framework and also is based on my ideas from the book. EulerHS is a default option for all the new projects at the financial company Juspay (Bangalore, India). Juspay's PureScript frameworksBefore EulerHS, we have've created two other Free monadic frameworks: The Presto.Core framework is used for building mobile apps. It was the first Free monadic framework I designed for Juspay using my ideas (with participation of other people). Presto.Backend is intended for building web backends. It derives the design of components directly from Presto.Core. Presto.Backend was by my teammates, not me; although I've designed a recording-replying mechanism for white-box testing and improved the framework in a various places. Juspay's PureScript workflows engineAnother project I was working on with some other great India developers was about distributed persistable resumable and typed workflows, in PureScript, Node.JS and RabbitMQ. This project is not published yet, but it also based on the Free monad architecture. Persistency of workflows and ability to pause them at any time is achieved due to special interpreters utilizing the RecorderT transformer. Node projectThe Node is the most advanced production code in Haskell based the ideas of this book. The Node Framework makes building of distributed applications simple. It allows to handle concurrent state (with STM), work with KV database, host TCP, UDP and JSON-RPC servers, write network clients, interactible CLIs and more. The code of the nodes will be testable, safe and well-maintainable. This framework can be a reasonable replacement for Cloud Haskell. I've wrote a detailed post about framework usage and architecture: Building network actors with Node Framework Additional materialsAutomatic White-Box Testing with Free Monads (article and showcase)This is a showcase project demonstrating an approach to white-box testing. I've developed this approach for Juspay. It has its place in the Presto.Backend and EulerHS frameworks. The approach can be used for regression testing and not only. The idea is that Free monadic scenarios can be recorded into a JSON file (recording) which can be then replayed against a new version of the code. Recordings represent a full footprint of a scenario and thus replaying of it will immediately spot changes and bugs. Automatic White-Box Testing Showcase |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论