Я пишу функцию 'printLine', которая - с учетом списка ints - возвращает строку, содержащую горизонтальную линию. Длина этой строки должна быть максимальным значением списка int. Например:Haskell print horizontal line
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 Это хорошая идея. Я исправил проблему по-другому, чтобы оставаться как можно ближе к ОП. – redneb