gpt4 book ai didi

haskell - 为什么 Haskell 是完全声明式的?

转载 作者:行者123 更新时间:2023-12-04 09:10:23 28 4
gpt4 key购买 nike

我不太了解 之间的区别。势在必行声明性 编程范式。我读到 Haskell 是一种声明性语言。在某种程度上,我会说是的,但是在命令式的定义方面,有一些事情让我感到困扰。

当我有一个数据结构并使用 Haskell 的函数进行转换时,我实际上只是告诉了要转换的内容。因此,我将数据结构作为函数的参数提供,并对结果感到满意。

但是,如果没有真正满足我需求的功能怎么办?

我将开始编写一个自己的函数,该函数期望数据结构作为参数。之后,我将开始编写应该如何处理数据结构。由于我只能调用 native Haskell 函数,我仍然使用声明性范式,对吗?但是当我开始使用“if 语句”时会发生什么。既然我要告诉程序从那时起如何做事,那难道不会结束声明性吗?

最佳答案

也许这是一个观点问题。在我看来,根据其他事物来定义事物并没有什么必要,因为我们总是可以用它的定义替换某些东西(只要定义是纯粹的)。也就是说,如果我们有 f x = x + 1 ,然后我们看到的任何地方f z我们可以替换为 z + 1 .因此,纯函数不应真正被视为指令;它们应该被视为定义。

由于这个原因,许多 Haskell 代码被认为是声明性的。我们简单地将事物定义为其他事物的(纯)函数。

也可以在 Haskell 中编写命令式代码。有时我们真的很想说“做A,然后做B,然后做C”。这为函数应用的简单世界增加了一个新维度:我们需要一个“发生在之前”的概念。 Haskell 采用 Monad 概念来描述具有评估顺序的计算。事实证明这非常方便,因为它可以封装诸如更改状态之类的效果。

关于haskell - 为什么 Haskell 是完全声明式的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40130014/

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