我正试图围绕 Haskell 中的泛型。我的问题是我创建了一个连接函数,它接受一个字符串列表并返回一个巨大的字符串。
concatenate:: [String] -> String
concatenate xs = foldl (\acc x -> acc ++ x) [] xs
但现在我想代替字符串列表,使用任何东西的列表。这可以是字符串,也可以是整数。所以说
concatenate ["Phil", "is"]
生成“Philis”,同时
concatenate [[1,2],[3,4]]
生成 [1,2,3,4]。
我发现
concatenate:: [a] -> a
concatenate xs = foldl (\acc x -> acc ++ x) [] xs
不起作用,我不知道为什么。不是haskell的工作方式,无论a是什么类型,输出也是a?还是后半部分的问题不允许它作为所有类型的函数工作?