0

在我大学的一门函数式编程科目的期末考试中,有一个问题的代码清单使用了一个名为tops的函数。

我在官方教科书hoogleprelude index该死的internet中找不到任何关于该功能的信息 ,而且我的 hugs 解释器似乎无法识别它(WinHugs 98,v. 2006 年 9 月),即使有 hugs 扩展启用,要么。

我猜这是一个非常旧的版本中的某种已弃用的功能。任何人都更清楚这个 tops 函数是什么,或者即使它真的存在?

更新:

我找到了一份试卷。这是问题:

  1. 函数whatdoido计算什么?
whatdoido [] = [[]]
whatdoido (x:xs) = concat [[x:t] | t <- tops xs]
4

2 回答 2

4

让我们看看我们可以推断出什么,同时我们四处寻找做了什么tops

whatdoido [] = [[]]
whatdoido (x:xs) = concat [[x:t] | t <- tops xs]

如果我们假设,(x:xs)::[a]那么对于一些可能的多态/单态/类限制类型也是如此。[x:t]::[[a]]concat [[x:t] | t <- tops xs] :: [[a]]tops xs :: [[a]]tops :: [a] -> [[a]]a

很明显,该函数whatdoido获取其输入的尾部,在其tops上运行并将其输入的头部弹出到由返回的每个列表的前面tops

特别是,有人建议这tops只是 的一个错字whatdoido,在这种情况下,基本方程将意味着whatdoido xs = [xs]

另一个建议是fromtops的错字。如果是这样,这是一个令人惊讶的拼写错误,但在这种情况下,您会得到类似.tailsData.Listwhatdoido "Hi!" = ["Hi!", "H!", "H"]

于 2013-02-08T21:01:32.967 回答
1

除了hoogle,另一个搜索的地方是hayoo。我在那里也找不到tops函数,所以我怀疑这是你的老师在别处定义的函数。但是,hayoo 和 hoogle 不会索引 Hackage DB 中的每个包,因此它可能是在 Hackage 上的模块中定义的。

于 2013-02-08T17:35:33.123 回答