gpt4 book ai didi

Haskell CPS 编程风格问题

转载 作者:行者123 更新时间:2023-12-02 14:11:50 26 4
gpt4 key购买 nike

这是一个使用 CPS 样式将列表中的元素相乘的函数

mlist xx k = aux xx k
where aux [] nk = nk 1
aux (0:xs) nk = k 0
aux (x:xs) nk = aux xs $ \v -> mul x v nk

如果我将表达式aux (0:xs) nk = k 0中的'k'更改为'nk'会怎样,两者之间有什么区别?

最佳答案

k 始终是传递给 mlist 的原始延续,而对于列表 [1, 0] nk 在这种情况下将是 \v -> mul 1 v k(来自 aux 的第三种情况)。

如果我们假设 mul 定义为 mul x y k = k $ x*y,则这不会产生实际差异,因为 y始终为 0。但是达到该结果的实际方法是不同的(除非编译器可能进行优化)。

关于Haskell CPS 编程风格问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3209026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com