我的代码出了问题,如下所示:
import Data.List
splitat _ [] = ([],[])
splitat element (head:tail)
| element == head = ([],(head:tail))
| otherwise = ([head]++fst(splitat element tail), snd(splitat element tail))
它将列表分割为“element”的左侧和右侧子列表,然后将其组合成元组。 但是,在第三行中,“splitat element tail”命令被调用了两次,一次通过'fst',一次通过'snd'。 是否有办法只评估此项1次以保持递归树狭窄?
提前致谢。
head : ...
替换[head] ++ ...
。 - chepner