【发布时间】:2013-08-27 10:46:09
【问题描述】:
我有这个代码(我是 Haskell 新手)。
import Data.List.Split
padL :: Int -> String -> String
padL n s
| length s < n = replicate (n - length s) '0' ++ s
| otherwise = s
strInc :: String -> String -> String
strInc sep str =
let strarr = splitOn sep str
zprefix = strarr !! 0
znumber = strarr !! 1
in zprefix ++ sep ++ padL ( length (znumber) ) ( show ( read ( znumber ) + 1 ) )
Haskell 代码是差的、一般的还是好的?如何改进? 谢谢。
【问题讨论】:
-
我认为 Stackoverflow 不适合问这个问题。该网站是关于问题的,而不是代码审查。对于代码审查,有codereview.stackexchange.com。
-
我问的是我可能不知道的惯用 Haskell。已经有一个接受并回答了“我应该如何重构这个 Haskell...”的问题,类似于我的问题。如果有帮助,我可以在没有我的代码的情况下重新制定,标题对我的问题是不言自明的。
-
如果可能的话,单独维护标识符的数字部分,稍后再添加字符串部分。拥有
String -> String类型的数字增量函数似乎令人不快。如果您可以使用自定义读取和显示将您的号码包装在newtype中以实现您的最终结果,那就更好了。 (不知道你用这个做什么,这就是为什么我不确定。) -
这是一个学习练习。这是“你如何用那种语言做到这一点”的一部分。我在 Haskell 中提出了上述代码,但我想对我自己的 Haskell 开发进行审查。
标签: string haskell increment identifier