gpt4 book ai didi

haskell - 在 Haskell 中分配多个变量

转载 作者:行者123 更新时间:2023-12-02 10:42:12 24 4
gpt4 key购买 nike

刚刚开始使用 Haskell,我正在尝试找出基于单个条件分配多个变量的最佳方法。到目前为止,我只是打包和拆包元组。有更好/更惯用的方法吗?

(var1, var2, var3) = 
if foo > 0
then ("Foo", "Bar", 3)
else ("Bar", "Baz", 1)

还对打包和解包元组的成本感到好奇。如果我正在阅读this正确的是,这似乎在函数中得到了优化,但不确定赋值是否是这种情况。

最佳答案

是的,完全没问题。如果您在启用优化的情况下进行编译,元组确实会“拆箱”,因此它们不会产生额外的成本。代码将被转换为类似这样的内容:

(# var1, var2, var3 #) = 
case foo > 0 of
False -> (# "Bar", "Baz", 1 #)
True -> (# "Foo", "Bar", 3 #)

未装箱的三元组实际上只是三个值 - 它没有任何额外的结构。因此,它无法存储在数据结构中,但这没关系。当然,如果 foo 在编译时已知,case 也会被优化掉,你只会得到三个定义。

关于haskell - 在 Haskell 中分配多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28139347/

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