当前位置:  开发笔记 > 编程语言 > 正文

功能编程架构

如何解决《功能编程架构》经验,为你挑选了2个好方法。

我熟悉面向对象的体系结构,包括使用设计模式和类图进行可视化,我知道面向服务的体系结构及其契约和协议绑定,但是有一个关于系统的软件体系结构的特性.函数式编程语言?

我知道FP已被用于中型到大型项目.保罗格雷厄姆写了雅虎的第一个化身!存储在Common Lisp中.一些lisp开发系统很复杂.用函数式语言编写的人工智能和金融系统可以变得非常大.他们都至少拥有某种固有的架构,但我想知道他们是否有任何共同之处?

基于表达式评估的架构是什么样的?FP架构是否更具可组合性?

更新:凯尔提醒我,SICP是这个主题的一个很好的资源.

更新2:我发现了一个关于这个主题的好文章: 函数式编程如何影响代码的结构?



1> Apocalisp..:

使用函数式语言的项目的"体系结构"中的共同点是,在传统的系统体系结构意义上,它们往往被分成代数层而不是子系统.

有关此类项目的绝佳示例,请查看XMonad,Yi和HappS.如果你检查它们是如何构造的,你会发现它们包含一层结构的单层结构,其间有一些组合胶.

另请参阅Scala实验论文,该论文概述了一种体系结构,其中系统由抽象其依赖性的组件组成.



2> graninas..:

我目前正在编写"功能编程中的设计和架构"一书.它描述了纯FP世界中存在的许多设计模式和方法(主要语言是Haskell),但不仅如此.本书教你如何从头开始构建大型应用程序,包括纯粹不纯的状态,多线程,网络,数据库,GUI,如何将其划分为多层并获得简单性.它还展示了如何为域和语言建模,如何组织和描述应用程序的架构如何测试它,甚至更多.

主题列表包括:

使用图表进行体系结构建模的方法;

需求分析;

嵌入式DSL域建模;

外部DSL设计和实现;

Monads作为具有效果的子系统;

免费monad作为功能接口;

箭头化的eDSL;

使用自由monadic eDSL进行控制反转;

软件交易记忆;

镜头;

国家,读者,作家,RWS,ST monads;

不纯的状态:IORef,MVar,STM;

多线程和并发域建模;

GUI;

主流技术和方法的适用性,如UML,SOLID,GRASP;

与不纯子系统的交互.

本书基于我正在研究的Haskell项目,特别是SCADA应用程序Andromeda.这本书的代码可以在这里找到.虽然这本书正在开发中(它会做,直到在2017年),我可以推荐你熟悉我的文章"设计和建筑在FP" 这里(俄罗斯).

UPDATE

我在网上分享了我的书(前5章).请参阅Reddit上的帖子

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有