我真的是 Haskell 的新手,并且一直在经历99 个问题的翻译。这是我对数字 9 的解决方案:
pack :: (Eq a) => [a] -> [[a]]
pack (xs)
| null xs = []
| otherwise =
let (matched, unmatched) = span (== head xs) xs
in [matched] ++ pack unmatched
| null xs = []
当类型签名说函数返回一个[[]]
. 我见过针对同一问题的其他解决方案做同样的事情。
我的意思是,我不是在抱怨,但这是特别允许的吗?有什么需要注意的警告吗?
如果有帮助,我在默认的 Windows 7 Haskell Platform 2013.2.0.0 安装上使用 GHCi。