相关疑难解决方法(0)

56
推荐指数
5
解决办法
3万
查看次数

展平列表清单

我必须编写一个使列表列表变平的函数.

例如flatten [] = []flatten [1,2,3,4] = [1,2,3,4]flatten [[1,2],[3],4,5]] = [1,2,3,4,5]

我在能够根据扁平功能给出的类型匹配时遇到问题.

这就是我所拥有的:

data A a = B a | C [a] deriving (Show, Eq, Ord)

flatten::(Show a, Eq a, Ord a)=>A a -> A a
flatten (C []) = (C [])
flatten (C (x:xs) ) = (C flatten x) ++ (C flatten xs)
flatten (B a) = (C [a])
Run Code Online (Sandbox Code Playgroud)

从我可以告诉的问题是,++运算符期望其两个参数的列表,并且我试图给它一些类型A.我添加了A类型,因此函数可以获得单个元素或元素列表.

有没有人知道以不同的方式做到这一点,或解释我可以做些什么来修复类型错误?

haskell types list abstract

10
推荐指数
2
解决办法
2万
查看次数

标签 统计

haskell ×2

list ×2

abstract ×1

types ×1