gpt4 book ai didi

haskell - 功能知识的具体示例,让您编写更好的命令式/OO代码

转载 作者:行者123 更新时间:2023-12-03 14:55:02 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.


8年前关闭。







Improve this question




我从事函数式编程已经有一段时间了,我认为这很棒,所以我想教我的一些 friend Haskell。

不幸的是,我想不出任何特定的代码来展示它们并说“看,这就是它的命令式外观,看看功能有多好”

那么,比我更专业的人(这是一个非常低的要求)可以帮助我吗?

这对我来说似乎并不反对,但如果是的话,请告诉我如何解决它。

最佳答案

可能最好的带回概念是所谓的“值(value)语义”和“纯度”。

它们中的每一个都相互竞争,以至于在实践中很难将它们分开。然而,原则上,值语义意味着每个“事物”都应该像一个值而不是一个对象。它会导致更简单的传递,减少有状态的“远处的怪异 Action ”,并且它提供了一些背景来对代码执行等式推理。纯度意味着副作用不会发生在您有代码的任何地方,而只会出现在仔细划定的点上。这意味着您的大部分代码最终都是独立且可重用的,而只有核心“应用程序”位与状态和效果纠缠不清。

您可能会说纯度在任何地方都有值语义,或者值是纯粹的计算——所以也许值得说“值”指的是系统的名词(静态),而“纯度”指的是动词(动态)。

众所周知,这些技术在其他语言中也很有用。由于组织和正确性的好处,现在 OO 语言中的一个常见想法是愉快地为值语义牺牲一些速度。如果您对 Haskell 感到满意,那么您将理解如果将值语义和纯度应用到整个程序的每个方面而不妥协,它们是如何工作的。这意味着您已经接触到一些用于推理和构建纯程序的强大模式。

我一直在考虑进行比较的一个地方是自由单子(monad)和命令模式。两者都在解决非常相似的问题——“我如何明确一个包含程序要执行的指令的结构,并在以后以各种方式执行它?”——但是命令模式倾向于在很多可变性周围跳舞,至少,解释器如果不是命令本身。

我们可以编写行为更像 Free monad 的命令模式吗?会有什么好处?如果你有很强的 Haskell 背景,这些问题你可以更敏锐地提出。

关于haskell - 功能知识的具体示例,让您编写更好的命令式/OO代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22682469/

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