我做了99個Haskell的問題與我碰到下面的代碼附帶的解決方案之一: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 [email protected](h_p_xs:t_p_hs) = pack' xs
我想知道當包」被調用的第一後衛,如果這是一個常見的模式在Haskell代碼中引用從函數調用返回的列表的頭部和尾部。是否有多次調用「在任何遞歸級別打包,這是一個快速解決方案?
如果我改變X ==頭h_p_xs =(X:h_p_xs):t_p_hs爲x ==頭XS =(X:h_p_xs):t_p_hs有在程序的運行方式的區別? –
@ÞórÓðinsson據我現在所見,它應該是等效的。 – chi