gpt4 book ai didi

Haskell - 确定在 if-then-else 表达式中使用的数据类型构造函数

转载 作者:行者123 更新时间:2023-12-02 01:02:23 29 4
gpt4 key购买 nike

我有以下代码:

data Instruction = IntDec String String | Stop

run :: Instruction -> Bool
run inst =
if (isStop inst) then True
else False
where
isStop :: Instruction -> Bool
isStop (Stop) = True
isStop _ = False

我的问题是有没有办法在 if 语句中执行相同的代码。例如

run inst = 
if (isTypeOf inst == Stop) then True
else False

我知道我可以通过使用这个来大大简化我的代码:

run Stop = True
run _ = False

但我想使用 if 语句,因为我的实际代码更长更复杂

最佳答案

不,没有(除了将您的值与完全构造的实例进行比较...只有当您的值实际上 Eqable 时才有效)。

可以做的是自己编写该函数,或者使用 case 语句:

case aValue of
Constructor x -> something
Konstruktor y -> somethingElse

无关注释:

I want to use a if statement due to my actual code being a lot longer and complex

这表明您的代码可能复杂,您应该将其分解成更小的函数。在一个函数中做太多事情会使编写变得困难,而且以后几乎不可能阅读它。

关于Haskell - 确定在 if-then-else 表达式中使用的数据类型构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26952801/

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