Haskell 创建并 return 变量
Haskell Create and return variable
我是 Haskell 的新手,我在创建和 return 变量方面遇到了一些问题。
实际上我的问题是在函数范围内创建一个变量并将其return。现在我在函数声明中声明了一个空变量,函数将 return 它。
例如我想return nb 的平方根i。因为我不知道如何在范围内创建变量 i,所以我用好的 nb 调用 mySqr,未来的平方根 i 为空。
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
这里我们 return 一个 Maybe Int
即 Nothing
如果不存在平方根。我们知道平方根不存在,如果i2>n,因为我们只增加i.如果我们找到平方根,我们 return 将它包装在 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 的新手,我在创建和 return 变量方面遇到了一些问题。
实际上我的问题是在函数范围内创建一个变量并将其return。现在我在函数声明中声明了一个空变量,函数将 return 它。
例如我想return nb 的平方根i。因为我不知道如何在范围内创建变量 i,所以我用好的 nb 调用 mySqr,未来的平方根 i 为空。
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
这里我们 return 一个 Maybe Int
即 Nothing
如果不存在平方根。我们知道平方根不存在,如果i2>n,因为我们只增加i.如果我们找到平方根,我们 return 将它包装在 Just
数据构造函数中。例如:
Prelude> mySqr 0
Just 0
Prelude> mySqr 1
Just 1
Prelude> mySqr 2
Nothing
Prelude> mySqr 3
Nothing
Prelude> mySqr 4
Just 2
当然还有更快的计算平方根的方法。我把它留作练习。