gpt4 book ai didi

functional-programming - 有没有功能模型之类的东西?

转载 作者:行者123 更新时间:2023-12-04 08:41:34 25 4
gpt4 key购买 nike

在面向对象范例中,我将在开始使用OO语言实现它之前创建一个对象/概念模型。

功能编程中是否有任何与对象模型并行的东西。它被称为功能模型吗?或者我们先在两种范例中创建相同的概念模型,然后再以一种语言实现该模型。

如果存在功能模型,是否有文章或书籍可供我阅读?

或用不同的方式来表达……即使我们使用函数式编程语言,我们也将从对象模型开始吗?

最佳答案

其实有。有一种基于抽象数据类型的功能语言规范,称为代数规范。它们的行为在某些方面与对象的行为非常相似,但是结构是逻辑和数学的,并且像功能结构一样是不可变的。

布宜诺斯艾利斯大学的“算法和数据结构”类中使用的一种特定的功能规范语言具有生成器,观察器和其他操作。
生成器是一个既是实例又是数据类型可能的组合的表达式。
例如,对于二叉树(ADT bt),我们有空节点和二叉节点。因此,我们将拥有发电机:

-nil
-bin(left:bt, root: a, right:bt)

其中left是bt的实例,根是通用值,right是另一个bt。
因此,nil是bt的有效形式,但是bin(bin(nil,1,nil),2,nil)也是有效的,它表示一个二叉树,其根节点的值为2,左子节点的值为值为1,且子权利节点为空。

因此,对于一个说要计算树中节点数的函数,您需要定义ADT的观察者,并定义一组映射到每个生成器的公理。
因此,例如:
numberOfNodes(nil) == 0
numberOfNodes(bin(left,x,right))== 1 + numberOfNodes(left) + numberOfNodes(right)

这具有使用操作的递归定义的优势,并且具有更多形式上有趣的属性,您可以使用称为结构归纳的某种东西来证明您的规范正确(是的,您证明算法将产生正确的结果)。

这是一个学术性话题,在学术界很少见,但是值得一提的是,它有可能对程序设计有一个深刻的了解,这种改变可能会改变您对算法和数据结构的思考方式。
正确的引用书目包括:

Bernot, G., Bidoit, M., and Knapik, T. 1995. Observational specifications and the indistinguishability assumption. Theor. Comput. Sci. 139, 1-2 (Mar. 1995), 275-314. DOI= http://dx.doi.org/10.1016/0304-3975(94)00017-D

Guttag, J. V. and Horning, J. J. 1993. Larch: Languages and Tools for Formal Specification. Springer-Verlag New York, Inc. Abstraction and Specification in Software Development, Barbara Liskov y John Guttag, MIT Press, 1986.

Fundamentals of Algebraic Specification 1. Equations and Initial Semantics. H. Ehrig y B. Mahr Springer-Verlag, Berlin, Heidelberg, New York, Tokyo, Germany, 1985.



带有相应的链接:
http://www.cs.st-andrews.ac.uk/~ifs/Resources/Notes/FormalSpec/AlgebraicSpec.pdf
http://nms.lcs.mit.edu/larch/pub/larchBook.ps

这是一个有趣的话题。

关于functional-programming - 有没有功能模型之类的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/288027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com