gpt4 book ai didi

haskell - 如何进行简单的 1 行模式匹配? (从模式匹配中获取 Bool)

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

在下面的代码中,我如何检查 - 仅通过在 if 旁边添加一行代码 - foo 是否为 Yes?

data Asdf = Yes | No | Other

foo :: Asdf
foo = Yes

hello :: String
hello =
if <check if foo is Yes> -- How?
then "foo is Yes"
else "foo isn't Yes"

我知道我可以使用case,但这个问题的要点是如何从中得到一个Bool。这对我在单元测试等方面很有用。(case 很快就会变得非常困惑。)

最佳答案

你可以使用

hello =
if (case foo of {Yes -> True; _ -> False})
then "foo is Yes"
else "foo isn't Yes"

但这绝对不是我推荐的。如果您可以使用 Willem Van Onsem 和 bheklir 建议的 Eq 实例,那么就足够了;但一般来说我也会避免使用 Eq。我认为您不应该努力获得 bool 值 - bool 值始终是处理某些信息的信息最少的方式。直接使用案例

hello =
case foo of
Yes -> "foo is Yes"
_ -> "foo isn't Yes"

更好;如果这在单元测试集合中太笨重,那么为什么不定义一个合适的辅助函数来完成基本相同的事情呢?

关于haskell - 如何进行简单的 1 行模式匹配? (从模式匹配中获取 Bool),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45282482/

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