如何优雅地实现 blowup 函数呢?
blowup 函数的定义如下:
“abc” ->"abbccc"
"abcd" -> "abbcccdddd"
....
我写了个实现,但是觉得不太优雅,有没有更直接更优雅一些的写法呢?
blowup :: String -> String blowup [] = [] blowup xs = concat [take (fst x) (repeat (snd x)) | x <- zip [1..] xs] |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
与一楼的类似
复制代码
我也来一个
复制代码
flw 兄一出手,果然,佩服,学习ing.
blowup = concat . zipWith replicate [1..]
或者下面这个实现?
blowup2 [] = []
blowup2 xs = (blowup2 . init) xs ++ take (length xs) (repeat (last xs) )