gpt4 book ai didi

haskell - Haskell 中的类型匹配

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

如果 SomeType 定义为:

data SomeType = X {myBool :: Bool} 
| Y {myString :: String}
| Z {myString :: String}

我将更新一个任意的 X,依赖于他的类型,如下所示:
changeST :: SomeType -> SomeType
changeST (X b) = (X True)
changeST (Y s) = (Y "newString")
changeST (Z s) = (Z "newString")

第三行和第四行做的非常一样,它们更新给定类型的字符串。
有什么方法可以用一行替换这两行,例如。通过将类型分配给变量?

最佳答案

不是通过将类型分配给变量,而是通过进行字段替换:

changeST :: SomeType -> SomeType
changeST (X b) = (X True)
changeST st = st { myString = "newString" }

这将返回与其参数相同的 st,但具有 myString 的值字段替换。字段的一个很好的特性是你可以不用关心它是哪个数据构造器,只要它是使用 myString 的数据构造器之一就可以做到这一点。 .

关于haskell - Haskell 中的类型匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1874828/

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