gpt4 book ai didi

Haskell - 尝试生成一个字符串列表(大小为 m)(大小为 n)

转载 作者:行者123 更新时间:2023-12-01 12:24:55 25 4
gpt4 key购买 nike

我正在尝试定义一个函数,该函数采用两个整数值 m 和 n。它返回一个可以显示为矩形的值。

e.g. rectangle 3 4
****
****
****

在我的代码中,我收到一个语法错误,指出我的 [Char] 类型错误,但我没有在任何地方使用 char。

代码:

rectangle :: Int -> Int -> [String]
rectangle m n = generateRectangle m n []

generateRectangle :: Int -> Int -> [String] -> [String]
generateRectangle m n currentRectangle =
if length currentRectangle < n then
generateRectangle m n (addRow m ""):currentRectangle
else
currentRectangle

addRow :: Int -> String -> String
addRow size currentRow =
if length currentRow < size then
addRow size currentRow++"*"
else
currentRow

错误:

    ERROR file:test.hs:8 - Type error in application
*** Expression : generateRectangle m n (addRow m "")
*** Term : addRow m ""
*** Type : [Char]
*** Does not match : [String]

最佳答案

您的 addRow 返回一个 String,它是一个 [Char]。但是,您的 generateRectangle 需要一个 [String],它是一个 [[Char]]:

    generateRectangle m n (addRow m "") : currentRectangle
^^^^^^^^^^^^^
this is a String, not a [String]

这是一样的

    (generateRectangle m n (addRow m "")) : currentRectangle

并且类型不匹配。

你可能是这个意思:

    generateRectangle m n ((addRow m "") : currentRectangle)

请记住,函数应用程序具有最高的优先级。


话虽这么说,试着写一个函数

repeatNTimes :: Int -> a -> [a]

相反。然后,您可以使用该函数两次编写 rectangle:

rectangle n m = repeatNTimes ??? (repeatNTimes ??? ???)

也许您甚至知道一个类似于 repeatNTimes 的函数,但请先尝试自己弄明白。

关于Haskell - 尝试生成一个字符串列表(大小为 m)(大小为 n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40869299/

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