gpt4 book ai didi

haskell - 在 Haskell 中使用自定义二进制数据类型是个坏主意吗?

转载 作者:行者123 更新时间:2023-12-02 06:13:55 25 4
gpt4 key购买 nike

最近我编写了一个程序,其中使用了以下形式的数据类型:

data MyType = Constructor1 | Constructor2 deriving Eq

是的,此类型实际上与 Bool 相同,我只是将其命名为不同的名称以使我的代码更具可读性。在程序的后面,我有

形式的函数
myFunc input = if input == Constructor1 then --do something
else --do something else

我认为这可能是个坏主意的原因是,如果按原样解释,每次程序遇到这个分支时,它都必须运行 == 它为 MyType 设置的函数,以获取 Bool 传递给 if_then_else_ 函数,而如果我刚刚使用 Bool 消除了 == 函数的必要性,这将加快处理速度。

我应该将 MyType 的所有实例替换为 Bool 的实例,还是 ghc 以某种方式优化这些数据类型的使用?

最佳答案

不,不要将其替换为 Bool;而是用模式匹配替换相等性检查。

myFunc Constructor1 = -- do something
myFunc Constructor2 = -- do something else

关于haskell - 在 Haskell 中使用自定义二进制数据类型是个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46357137/

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