我一直在研究 ListT 的实现,以找到一种好方法来做这样的事情:
func list = do
set <- get -- Data.Set
el <- list
guard $ Set.notMember el set
return el
我知道我可以使用 ListT.fromFoldable,但我希望能够使用此流作为更大处理管道的一部分,而无需在每一步从列表转换为流并返回。也许是这样的:
func' list = (ListT.toReverseList . ListT.take 5 . func . ListT.fromFoldable) list
据我了解,这里应该使用流式传输方法。但我不明白如何使用例如list-t package来做到这一点。遍历能否以某种方式过滤掉流中的结果?我没有看到人们问这个问题,所以也许这种方法本身就有缺陷?