gpt4 book ai didi

Haskell 替代模式匹配的长列表?

转载 作者:行者123 更新时间:2023-12-04 16:34:20 24 4
gpt4 key购买 nike

我有一个函数,可以输出给定数据类型的 booleanlike 属性。此函数通过数据类型的第一个构造函数上的模式匹配来计算属性,因此类似于

data C = C1 | C2 | .. | Cn 

f :: C -> Bool
f (C1 _ _ ... _) = True
f (C2 _ _ ... _) = True
f (C3 _ _ ... _) = False
.
.
.
f (Cn _ _ ..._) = False

是否有更紧凑的方式来执行模式匹配,或者是否有另一种(也更紧凑)的方式来进行我的属性检查?我不想将属性添加到数据类型定义中,因为它可以相对容易地计算。

最佳答案

您可以使用记录语法避免通配符模式。另外,使用 case表达式以避免重复函数名称,例如

f :: C -> Bool
f x = case x of
C1 {} -> True
C2 {} -> False
...
Cn {} -> False

这与在不更改数据类型的情况下一样紧凑。

关于Haskell 替代模式匹配的长列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21906540/

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