-- genrep
genrep :: a -> Int -> [a]
genrep a n
| n == 0 = []
|otherwise = a ++ genrep (a (n-1))
所以我试图在哈斯克尔简单的复制功能 - 一个将采取泛型类型和复制了N次。但是,上述似乎并不奏效。我一直得到这个错误代码:有递归的麻烦和不匹配型哈斯克尔
*** Expression : a ++ genrep (a (n - 1))
*** Term : genrep (a (n - 1))
*** Type : Int -> [b]
*** Does not match : [a]
谁能告诉我发生了什么事?该函数看起来对我来说是正确的,但Haskell似乎并不喜欢这样。
嗯......这不起作用。我得到另一个错误,抱怨与这种无限类型的统一。 – Waffles 2011-03-17 06:37:47
编辑我的回复。 – 2011-03-17 06:42:01
@Waffles'[a] ++'是相当无意义的,只需使用'a:'。第一个将单个元素放入一个列表中,然后执行两个列表的连接,第二个只是将元素放入现有列表的列表构造函数。 OJ可能使用了第一种形式来紧密匹配你已有的东西。 – 2011-03-17 16:00:17