过滤自定义数据类型

时间:2015-11-22 03:49:04

标签: haskell filter

我有这种数据类型

data Temp = Temp [[Int]]
            deriving (Show)

所以,例如:

> let example = Temp [[2,3],[],[5,7,8],[2],[]]

如何仅过滤非空元素?我知道我可以这样做:

> filter (/=[]) [[2,3],[],[5,7,8],[2],[]]
[[2,3],[5,7,8],[2]]

但是尝试直接在example上过滤会给我一个错误:

> filter (/=[]) example
Couldn't match expected type ‘[[t]]’ with actual type 'Temp'

我的目标是编写一个执行该过滤并返回新列表的函数。我怎样才能做到这一点? (请耐心等待,我刚刚开始学习Haskell)

1 个答案:

答案 0 :(得分:2)

试试这个:

Error: All select() inputs must resolve to integer column positions.
    The following do not: *  var_name

即。 - 解构您的Temp值t获取列表列表,然后使用新的列表列表重建Temp值。

(关于使用Functor删除的内容)