【问题标题】:Trouble with expected type and actual type in HaskellHaskell 中预期类型和实际类型的问题
【发布时间】:2023-02-12 23:16:08
【问题描述】:

您好,我在 Haskell 中有以下代码,它应该在字符串中的每个字符之间生成一个空格:

addSpace :: Integer -> String -> String
addSpace n s
  = if length s <= 1
      then s
      else take 1 s ++ makeSpaces n ++ addSpace (drop 1 s)

makeSpaces :: Integer -> String
makeSpaces n | n == 0 = ""
             | n > 0 = " " ++ makeSpaces(n-1)

main :: IO ()
main = do
    print (addSpace 4 "test") 

输出应如下所示:"t e s t",但是,我收到以下错误:

“无法将预期类型‘[char]’与实际类型‘String -> String’相匹配。”

如何解决这个错误,以便生成正确的输出?

【问题讨论】:

    标签: haskell types


    【解决方案1】:

    您的函数,具有此类型签名:

    addSpace :: Integer -> String -> String
    

    接受 2 个参数 - 一个整数(每个字符之间要插入的空格数),以及要插入空格的字符串。

    然而在函数内部,您确实将其称为 addSpace (drop 1 s),仅使用一个字符串作为参数。您似乎忘记了整数参数。我假设你的意思是 addSpace n (drop 1 s) 在每个字符之间插入相同数量的空格。

    【讨论】:

      猜你喜欢
      • 2021-05-28
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      相关资源
      最近更新 更多