<分区>
最近我asked关于如何将一堆具有相同签名的闭包放入 Rust 中的向量中。来自 Haskell 的背景,它似乎有点复杂,每个 Rust 闭包都有自己独特的类型,需要一个特征来表示它们。在 Haskell 中,lambda 由其签名类型化,如果签名相同,则类型相同。
Rust 闭包和 Haskell lambda 函数之间是否存在导致这些差异的语义差异?
<分区>
最近我asked关于如何将一堆具有相同签名的闭包放入 Rust 中的向量中。来自 Haskell 的背景,它似乎有点复杂,每个 Rust 闭包都有自己独特的类型,需要一个特征来表示它们。在 Haskell 中,lambda 由其签名类型化,如果签名相同,则类型相同。
Rust 闭包和 Haskell lambda 函数之间是否存在导致这些差异的语义差异?
最佳答案
Rust 选择使用不同的类型有两个性能优势:
您也可以选择使用Box<Fn>
反而。这会花费堆分配并导致间接调用,但作为交换,每个签名只有一种类型。
关于haskell - Rust 闭包和 Haskell lambda 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49036486/