我是Haskell的新手,并且经历了99个问题的翻译.这是我对9号的解决方案:
pack :: (Eq a) => [a] -> [[a]]
pack (xs)
| null xs = []
| otherwise =
let (matched, unmatched) = span (== head xs) xs
in [matched] ++ pack unmatched
Run Code Online (Sandbox Code Playgroud)
| null xs = []当类型签名表示函数返回a时,我不知道如何允许我这样做[[]].我已经看到同样问题的其他解决方案做同样的事情.
我的意思是,我不是在抱怨,但这是特别允许的吗?我有什么需要注意的注意事项吗?
我在默认的Windows 7 Haskell Platform 2013.2.0.0安装上使用GHCi,如果这有帮助的话.