结构化程序设计方法提出于:代数结构与程序设计(algebraic structure)

可能有人给我一个例子,我们如何使用组,monoids 和环等代数结构来提高代码的可重用性?(或者我如何在编程中使用这些结构,至少知道我没有在高中学习所有的理论)。

我听说这是可能的,但我不知道如何在编程中应用它们,并在编程中普遍应用硬核数学。

2

这并不是真正的数学东西,而是数学思维。抽象是编程的关键。将真实的实时概念转换为数字和关系是我们每天都在做的事情。代数是所有事物的母亲,代数是定义正确性的规则集,它是最高水平的抽象,因此,理解代数意味着您可以思考更清晰,更快,更有效的东西,例如从集合理论到类别理论,领域理论的发展,您都需要实践。

0

在函数式编程中,尤其是在 Haskell 中,将状态转换为 monad 的结构程序很常见。这样做意味着您可以在非常不同的程序中重用 monad 上的通用算法。

C++ 标准模板库以 amonoid的概念为特色。这个想法是,泛型算法可能需要一个操作来满足其正确性的类元公理。

例如,如果我们可以证明我们正在操作的类型T(数字,字符串,无论什么)在操作下是封闭的,我们知道我们不必检查某些错误;我们总是得到一个有效的T回来。

0

如今,计算机科学似乎从category theory中获得了很多好处。您会得到 monad,monoids,functor-整个数学实体,这些数学实体被用来提高代码的可重用性,利用抽象数学的抽象。

0

列表是具有一个生成器的自由 monoids,二叉树是组。您有有限或无限变体。

起点:

http://en..org/wiki/Algebraic_data_type http://en..org/wiki/Initial_algebra http://en..org/wiki/F-algebra

你可能想学习范畴理论,以及范畴理论处理代数结构的方式:这正是函数式编程语言处理数据结构的方式,至少是 shapewise。

示例:类型树 A 为

Tree A = () | Tree A | Tree A * Tree A

读作同构的存在(*)(我设置G = Tree A

1 + G + G x G -> G

这与组结构相同

phi : 1 + G + G x G -> G
() € 1         -> e
x € G          -> x^(-1)
(x, y) € G x G -> x * y

实际上,二叉树可以表示表达式,并且它们形成代数结构。G 的元素读取为身份,元素的逆或两个元素的乘积。二叉树是叶子,单棵树或一对树。请注意形状上的相似性。

(*)以及一个通用属性,但它们是其中的两个(有限树或无限懒惰树),所以我不会详细介绍。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(210)
Chris reeve:响应时的空结构(elliot reeve)
上一篇
Native代码:ReactNative代码在react-native-device-info后中断
下一篇

相关推荐

  • concord是什么牌子:穿越时空,体验Concord的非凡之美

    Concord是一个美国安全品牌,专门为家庭和企业提供安全产品。它的产品包括家用安全系统、安全监控设备、智能锁、安全门等。代码:CONCORD…

    2023-03-13 11:05:04
    0 67 96
  • cords是什么意思:如何使用Cords来提高生产力

    示例示例Cords是一种常用的设计模式,它允许你把多个函数链接在一起,以便更好地处理复杂的逻辑。代码示例:…

    2023-01-28 07:40:52
    0 19 34
  • java foreach跳出本次循环:使用break语句跳出Java Foreach循环

    Java foreach跳出本次循环可以使用continue语句。continue语句会跳过当前循环中剩余的语句,然后继续下一次循环。…

    2023-01-11 12:12:41
    0 96 44
  • what can i do for you 回答:How Can I Help You?

    这取决于您想要我做什么。我可以帮助您完成一些编程任务,如创建网站,编写脚本,编写应用程序,编写API,编写数据库,编写算法,编写机器学习模型等。我也可以帮助您解决其他技术问题,如调试代码,优化性能,解决安全问题等。例如,我可以为您编写以下代码,以实现某些功能:…

    2023-01-26 13:54:16
    0 18 73
  • mifare classic tool怎么用:使用Mifare Classic Tool来管理你的Mifare Classic卡

    Mifare Classic Tool是一款开源的Android应用程序,它可用于读取和写入Mifare Classic NFC标签。它的主要功能是:…

    2023-02-17 15:24:20
    0 35 25
  • cordic算法详解:实现CORDIC算法的数学原理及其应用

    CORDIC(COordinate Rotation DIgital Computer)算法是一种基于反复旋转的数字算法,可以用来计算几何函数(如正弦、余弦、正切等)和其他复杂函数,因此也被称为旋转算法。它是一种非常有效的算法,可以在很少的时间内实现几何函数的计算。CORDIC算法的基本思想是:通过反复旋转向量,以达到计算几何函数的目的。它的具体步骤如下:…

    2023-01-14 16:01:55
    0 13 94
  • struct和class区别 A Comparison of Their Characteristics and Uses

    示例示例struct和class的主要区别在于:struct是值类型,class是引用类型。…

    2023-01-27 15:29:38
    0 62 27
  • curl 超时时间设置解决网络请求延迟的最佳实践

    示例示例cURL 超时时间设置是指在 cURL 发出请求后,等待服务器响应的最长时间。如果超过了设定的超时时间,则会收到一个超时错误。可以使用 curl_setopt() 函数来设置 cURL 超时时间,该函数的第一个参数是 cURL 资源句柄,第二个参数是 CURLOPT_TIMEOUT,用于设置 cURL 超时时间。…

    2023-02-22 07:17:34
    0 51 20

发表评论

登录 后才能评论

评论列表(47条)