【发布时间】:2014-12-22 19:27:09
【问题描述】:
我正在做 99 个 Haskell 问题,在其中一个解决方案中我遇到了以下代码:
pack' [] = []
pack' [x] = [[x]]
pack' (x:xs)
| x == head h_p_xs = (x:h_p_xs):t_p_hs
| otherwise = [x]:p_xs
where p_xs@(h_p_xs:t_p_hs) = pack' xs
我想知道 pack' 何时在第一个守卫中被调用,这是否是 Haskell 代码中引用从函数调用返回的列表的头部和尾部的常见模式。在任何级别的递归中是否有多个调用 pack',这是一个快速的解决方案吗?
【问题讨论】:
标签: haskell