【发布时间】:2015-08-30 07:45:25
【问题描述】:
所以,我有这个功能,旨在对齐左侧的文本而不剪切单词(仅空格)。但是我的问题是我找不到函数的停止条件,它会无限运行。
f n "" = "" --weak condition
f n s = if n >= ((maximum . map length . words) s) then if (s !! n == ' ' || s !! n == '\t' || s !! n == '\n')
then take n s ++ "\n" ++ (f n ( drop n s)) else f (n-1) s
else error "Try bigger width!"
好吧,基本上如果 n 小于最长的单词,那么它会提示错误,否则它会“剪切”空格中的字符串,直到它到达一个非空格字符,然后它会递归调用自己以获取 @987654322 @。我还使用putStr 来避免输出中出现“\n”。
但是,正如我已经说过的,停止条件太弱或不存在。如果代码中还有其他流程或可能的优化(例如less ifs),请告知。
【问题讨论】:
标签: string function haskell if-statement recursion