设置后可以更改变量的值吗?

时间:2018-08-31 06:18:29

标签: haskell

我有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")

0 个答案:

没有答案