小编Tim*_*tzy的帖子

我们如何限制 Haskell 中的递归调用?

我的代码有问题,如下所示:

import Data.List

splitat _ [] = ([],[])
splitat element (head:tail)
  | element == head = ([],(head:tail))
  | otherwise = ([head]++fst(splitat element tail), snd(splitat element tail))
Run Code Online (Sandbox Code Playgroud)

它在“元素”处拆分列表,然后将左右子列表组合成一个元组。然而,在第三行中,'splitat element tail' 命令被调用两次,一次通过'fst',一次通过'snd'。有没有办法只评估这个术语 1 次以保持递归树的狭窄?

提前致谢。

recursion haskell

5
推荐指数
2
解决办法
95
查看次数

标签 统计

haskell ×1

recursion ×1