我有2个虚拟功能。 在功能2 中,我试图将参数设置为其他值。在功能1 中,我将参数值复制到变量中,然后尝试更改该变量的值。
在两种情况下,我都会遇到相同的错误(如下所示)。我可能不明白错误的原因是什么,但似乎一旦设置就无法修改变量的值。如果是这样,为什么?如果是出于其他原因,那是什么?
功能1
myFunction :: [Char] ->[Char] -> [Char]
myFunction a b = if length a > 1
then do
let a1 = a
a = a1 ++ "333"
else
b
功能2
myFunction :: [Char] ->[Char] -> [Char]
myFunction a b = if length a > 1 then a = "333" else b
错误
Stackoverflow.hs:8:28: error:
parse error on input `='
Perhaps you need a 'let' in a 'do' block?
e.g. 'let x = 5' instead of 'x = 5'
|
8 | a = a1 ++ "333"
| ^
通用 main 用于这两个功能:
main :: IO ()
main = do
putStrLn (myFunction "stack" "overflow")