如何对无限列表使用任意?
How to use arbitrary for a infinite list?
我有以下帮助功能:
-- Generator for variable names
instance Arbitrary VarName where
arbitrary = VarName <$> elements ["A", "B", "_0", "_"]
针对以下任务:
“定义一个函数 freshVars :: [Varname],它为您提供以下模式的无限变量名列表:
[变量名“A”,…,变量名“Z”,变量名“A0”,…,变量名“Z0”,变量名“A1”,…,变量名“Z1”,…]
我该怎么做?我想我没有正确理解任意性。
我们可以用 ["", "0", "1", …, "9", "10", "11", …, "99", …]
创建一个列表:
suffixes :: [String]
suffixes = "" : map show [0 ..]
现在我们已经有了,我们可以做一个列表理解,它将构造带有前缀 Char
acter 的字符串,该字符串将枚举 ['A' .. 'Z']
并使用后缀的一项。我们可以用 list comprehension:
freshVars :: [String]
freshVars = [VarName (… : …) | … <- …, … <- … ]
我将填写 …
部分作为练习。
我有以下帮助功能:
-- Generator for variable names
instance Arbitrary VarName where
arbitrary = VarName <$> elements ["A", "B", "_0", "_"]
针对以下任务: “定义一个函数 freshVars :: [Varname],它为您提供以下模式的无限变量名列表:
[变量名“A”,…,变量名“Z”,变量名“A0”,…,变量名“Z0”,变量名“A1”,…,变量名“Z1”,…]
我该怎么做?我想我没有正确理解任意性。
我们可以用 ["", "0", "1", …, "9", "10", "11", …, "99", …]
创建一个列表:
suffixes :: [String]
suffixes = "" : map show [0 ..]
现在我们已经有了,我们可以做一个列表理解,它将构造带有前缀 Char
acter 的字符串,该字符串将枚举 ['A' .. 'Z']
并使用后缀的一项。我们可以用 list comprehension:
freshVars :: [String]
freshVars = [VarName (… : …) | … <- …, … <- … ]
我将填写 …
部分作为练习。