xs
我们可以在表达式中融合两个遍历列表
(map f xs, map g xs)
像这样
unzip (map (\x -> (f x, g x)) xs)
有没有关于自动执行这种融合的研究?
(如果一个返回的列表在另一个之前被消耗,那么这里就有创建空间泄漏的风险。我更感兴趣的是防止额外的遍历而xs
不是节省空间。)
编辑:我实际上并不打算将融合应用到实际的内存中 Haskell 列表中,根据是否unzip
可以与其消费者融合,这种转换可能没有意义。我有一个我知道unzip
可以融合的设置(请参阅“FlumeJava:简单、高效的数据并行管道”)。