列表有filter : (a -> Bool) -> List a -> List a
,但Stream没有filter : (a -> Bool) -> Stream a -> Stream a
,为什么?
是否有其他类似工作的替代方案?
答案 0 :(得分:12)
默认情况下,Idris中的函数是完全的,并且整体检查器将正确地拒绝接受流上的过滤器,这是对于共同类型的非生产性定义的一个典型示例:filter isEven
应用于奇数nat流时返回?
检查Productive Coprogramming with Guarded Recursion,你会在这里找到同样的例子,并在共同类型的背景下找到一个很好的总体介绍。