Functional programming 为什么idris中没有流的过滤功能?

Functional programming 为什么idris中没有流的过滤功能?,functional-programming,idris,codata,Functional Programming,Idris,Codata,列表有filter:(a->Bool)->List a->List a,但流没有filter:(a->Bool)->Stream a->Stream a,为什么 是否有其他方法可以完成类似的工作?默认情况下,Idris中的函数为total,并且totality checker将正确地拒绝接受流上的筛选,这是一个关于共导类型的非生产性定义的典型例子:过滤器在应用于奇数nat流时会返回什么 检查,在这里您将找到这个非常相同的示例,并在协生产类型的上下文中找到一个关于totality的很好的介绍。和c

列表有
filter:(a->Bool)->List a->List a
,但流没有
filter:(a->Bool)->Stream a->Stream a
,为什么


是否有其他方法可以完成类似的工作?

默认情况下,Idris中的函数为total,并且totality checker将正确地拒绝接受流上的筛选,这是一个关于共导类型的非生产性定义的典型例子:
过滤器在应用于奇数nat流时会返回什么

检查,在这里您将找到这个非常相同的示例,并在协生产类型的上下文中找到一个关于totality的很好的介绍。

和cf.由Bertot提供了流上类似过滤器函数的有效定义。