穿插和隐藏功能prependToAll

Alb*_*ani 1 haskell

在列表中散布分隔符有两种可能性:

  • [x1, sep, x2, sep, .. xn]

  • [sep, x1, sep, x2, .. sep, xn]

在Data.List中使用"intersperse"函数:

?> intersperse 0 [1..5]
[1,0,2,0,3,0,4,0,5] 
?> 0 : intersperse 0 [1..5]
[0,1,0,2,0,3,0,4,0,5]
Run Code Online (Sandbox Code Playgroud)

但是,使用隐藏(未导出)函数"prependToAll"可以简化第二种情况:

?> prependToAll 0 [1..5]
[0,1,0,2,0,3,0,4,0,5]
Run Code Online (Sandbox Code Playgroud)

为什么在Data.List库中导出了散布而而对于prepreToAll却没有?

kaz*_*kaz 7

在注释prependToAll中的Data.List源代码:

 ...
 -- Not exported:
 -- We want to make every element in the 'intersperse'd list available
 -- as soon as possible to avoid space leaks. Experiments suggested that
 -- a separate top-level helper is more efficient than a local worker.
 ...
Run Code Online (Sandbox Code Playgroud)

  • @AlbertoCapitani如果你能为暴露`prependToAll`做一个坚实的案例,请随时这样做.[wiki page](https://wiki.haskell.org/Library_submissions)有一些指导方针可以将好的提案写入图书馆邮件列表(特​​别参见"提议者指南"部分).公平警告:"因为此时此刻对我来说很方便"可能不足以说明理由. (4认同)