gpt4 book ai didi

Haskell 创建并返回变量

转载 作者:行者123 更新时间:2023-12-04 00:57:27 26 4
gpt4 key购买 nike

我是 Haskell 新手,在创建和返回变量方面遇到了一些问题。

实际上我的问题是在函数作用域中创建一个变量并返回它。现在我在函数声明中声明一个空变量,函数将返回它。

例如我想返回nb的平方根i。因为我不知道如何在作用域中创建变量 i,所以我用好的 nb 和 future 的平方根 i 为空来调用 mySqr。

mySqr :: Int -> Int -> Int
mySqr nb i
| i * i == nb = i
| otherwise = mySqr nb (i + 1)

通话:mySqr 25 0

它有效,但我希望它更好。

感谢您的帮助。

最佳答案

人们通常会创建一个本地作用域的函数,通常这个函数被命名为go:

mySqr :: Int -> <b>Maybe</b> Int
mySqr n = <b>go 0</b>
where <b>go</b> i | i2 > n = Nothing
| i2 == n = Just i
| otherwise = go (i+1)
where i2 = i*i

这里我们返回一个Maybe Int,如果不存在平方根,则它是Nothing。我们知道,如果i2>n,平方根不存在,因为我们只增加i。如果我们找到平方根,我们会将其包装在 Just 数据构造函数中返回。例如:

Prelude> mySqr 0
Just 0
Prelude> mySqr 1
Just 1
Prelude> mySqr 2
Nothing
Prelude> mySqr 3
Nothing
Prelude> mySqr 4
Just 2

当然还有更快的方法来计算平方根。我把它留作练习。

关于Haskell 创建并返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61291324/

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