gpt4 book ai didi

haskell - haskell在哪里保存状态?

转载 作者:行者123 更新时间:2023-12-05 02:33:41 35 4
gpt4 key购买 nike

人们说 Haskell 没有状态。我认为实用程序需要状态。 haskell 也是如此。Haskell 没有保存状态的变量,haskell 是如何保存状态的?我认为 haskell 在 head 中使用 lambda 变量作为内存!

    someAction1 >>= \result1 ->
( someAction2 >>= \result2 ->
( someAction3 >>= \result3 -> return (somef result1 result2 result3)))

最后一个函数somef可以通过result1,result2,result3得到someAction1,someAction2,someAction3的result

lambda 变量 (result1, result2, result3) 的作用类似于 MEMORY(用于保存状态的变量)。

“Haskell 没有状态”并不意味着实际程序不需要状态概念。

lambda代数之所以能做到图灵完备一样的事情,是因为lambda变量的作用域。由于 lambda 变量像内存一样使用,因此可以进行通用编程。

我做对了吗?

最佳答案

“人们说 Haskell 没有状态。”

Haskell 确实有状态,只是大多数时候它非常短暂。以下面的函数为例。

mysum :: [Integer] -> Integer
mysum [] = 0
mysum (x:xs) = x + mysum xs

这个函数正在抓取状态,值保存在堆栈中。仅有的两个长期值是输入列表和输出值。如果这个函数被另一个函数调用,那么即使这些值也不是长期的。

do 符号看起来有状态,但这只是语法糖。看起来命令式的代码变成了一系列链接的 lambda 表达式。 Desugaring do-notation for Monads

如果需要长期状态,可以将其存储在 State Monad 或数据库中。

关于haskell - haskell在哪里保存状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70912943/

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