假设我有前缀p
和字符串列表ss
。我想为p ++ s
中的每个字符串s
生成一个记录字段名称ss
。
data Example = Example
{ field1 :: String
, field2 :: String
-- the rest of the fields are generated
, prefixString1 :: Maybe String
, prefixString2 :: Maybe String
, prefixString3 :: Maybe String
-- ...
} deriving (Eq, Show)
我正在为我不拥有的API编写API客户端。提供了某些查询参数,端点将在对象上提供其他参数。
-- without query param
{
"field_1": "",
"field_2": ""
}
-- with query param "x"
{
"field_1": "",
"field_2": "",
"field_1_x": "",
"field_2_x": ""
}
-- with query param "y"
{
"field_1": "",
"field_2": "",
"field_1_y": "",
"field_2_y": ""
}
查询参数可以有大约30个不同的值,所以我最终会有超过60个字段的大记录,除了后缀不同外,它们基本相同。
答案 0 :(得分:0)
我不这么认为。
data
表示您正在定义新数据类型。 Haskell是一种静态编程语言,意味着所有类型在编译时都是已知的。
使用List,Tree或您可以在运行时扩展/处理的其他数据结构。
<强>观强>
如果这些属性具有相同的后缀,请将后缀和其他字符串保存在列表中。如果你需要它们,你只需要结合后缀&amp;字符串。
也许是这样的:
data A = A [String] String
create :: A -> [String]
create (A ss suff) = create' ss suff
where create' [] _ = []
create' a b = ((head a) ++ b) : create' (tail a) b