gpt4 book ai didi

haskell - 函数所有可能值的列表

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

我有多个对象,每个对象都与一个字符串相关联。是否有某种模式允许以类型安全的方式获取所有字符串的列表?

data MyObject = Foo | Bar 

getObjectString :: MyObject -> String
getObjectString Foo = "Foo"
getObjectString Bar = "Bar"

-- Bad because not type safe and String duplication
listOfAllObjectStrings :: [String]
listOfAllObjectStrings = ["Foo", "Bar"]

仍然不是类型安全但减少字符串重复的不同解决方案。

data MyObject = Foo | Bar 

getObjectString :: MyObject -> String
getObjectString Foo = listOfAllObjectString !! 0
getObjectString Bar = listOfAllObjectString !! 1

listOfAllObjectStrings :: [String]
listOfAllObjectStrings = ["Foo", "Bar"]

最佳答案

一旦你让它派生EnumBounded,你就可以获得MyObject的所有值。然后,您将对每个值应用 getObjectString 以获取字符串值。

data MyObject = Foo | Bar deriving (Enum, Bounded)

getObjectString :: MyObject -> String
getObjectString Foo = "Foo"
getObjectString Bar = "Bar"

listOfAllObjectStrings :: [String]
listOfAllObjectStrings = map getObjectString [minBound .. maxBound]

关于haskell - 函数所有可能值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69433724/

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