我正在写一个函数'printLine',给出一个int列表 - 返回一个包含水平线的字符串。该行的长度应该是整数列表的最大值。例如:Haskell打印水平线
printLine [1, 3, 4, 0]
应该返回:
+----+----+----+----+
(请注意,长度由连字符的数量决定,而不是 '+' - 标志应该始终有5 '+' - 。招牌)
我已经写了下面的代码:
printLine :: [Int] -> String
printLine widthList = concat $ concat $ foldr (:) [["+"]] boundList
where boundList = replicate 4 ("+" : hyphenList)
hyphenList = replicate max "-"
max = maximum widthList
的代码工作正常,但是,我觉得我已经过度复杂这个功能。例如,我在函数中使用了'concat'两次。是否有一种“更清洁”的方式去解决这个问题?
你错过了在开始和结束加号 - 你会得到他们,如果你做了一轮嵌入其他的方式,比如'插入(复制4' - ')(复制5“+”)' –
@DavidFletcher这是一个好主意。我以不同的方式解决了这个问题,以尽可能地接近OP。 – redneb