如何对无限列表使用任意值?

发布于 2025-01-10 16:34:29 字数 364 浏览 0 评论 0原文

我有以下帮助功能:

    -- Generator for variable names
instance Arbitrary VarName where
  arbitrary = VarName <$> elements ["A", "B", "_0", "_"]

用于以下任务: “定义一个函数 freshVars :: [Varname],它为您提供以下模式的无限变量名称列表:

[VarName "A",...,VarName "Z",VarName "A0",...,VarName "Z0",VarName “A1”,…,VarName“Z1”,…]”

我该怎么做?我想我没有正确理解任意性。

i have the following help function:

    -- Generator for variable names
instance Arbitrary VarName where
  arbitrary = VarName <
gt; elements ["A", "B", "_0", "_"]

for the following task:
"Define a function freshVars :: [Varname], which gives you an infinite list of variablenames in the following pattern:

[VarName "A",…,VarName "Z",VarName "A0",…,VarName "Z0",VarName "A1",…,VarName "Z1",…]"

How can i do this? i think i dont understand arbitrary properly.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

还在原地等你 2025-01-17 16:34:29

我们可以使用 ["", "0", "1", …, "9", "10", "11", …, "99", …] 创建一个列表

suffixes :: [String]
suffixes = "" : map show [0 ..]

:有了这个,我们就可以创建一个列表理解,它将构造带有前缀 Character 的字符串,该字符将枚举 ['A' .. 'Z'] 并使用其中一项 后缀。我们可以通过列表理解来做到这一点:

freshVars :: [String]
freshVars = [VarName (… : …) | … <- …, … <- … ]

我将填写 部分作为练习。

We can make a list with ["", "0", "1", …, "9", "10", "11", …, "99", …] with:

suffixes :: [String]
suffixes = "" : map show [0 ..]

Now that we have that, we can make a list comprehension that will construct strings with a prefix Character that will enumerate over ['A' .. 'Z'] and uses one of the items of the suffix. We can do that with list comprehension:

freshVars :: [String]
freshVars = [VarName (… : …) | … <- …, … <- … ]

where I leave filling in the parts as an exercise.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文