私は、関数の 'printLine'を書いています - intのリストを与えられて - 水平線を含む文字列を返します。この行の長さは、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'を2回使用しました。この問題について「クリーン」な方法がありますか?
あなたが最初と最後にプラス記号が欠落している - あなたは 'のように、他の方法でラウンドを挿入なかった場合は、それらを取得したいですintercalate(レプリケート4 ' - ')(レプリケート5 "+") ' –
@DavidFletcherそれは良い考えです。私はできるだけOPに近づくように問題を別に修正しました。 – redneb