是否有nullValue满足[nullValue] == []?

时间:2016-09-18 09:44:18

标签: haskell null

我有这样的程序:

foo x = if x == 0
            then []
            else [x]

但我试着这样做:

foo x = (:[]) $ if x == 0
                    then nullValue
                    else x

我无法弄清nullValue满足[nullValue] == []的内容,有人可以帮我解决这个问题吗? (引入Maybe会使情况变得更糟)

我认为障碍是类型系统/类型检查?

2 个答案:

答案 0 :(得分:4)

:是非空列表的构造函数。它的结果永远不会是一个空列表,无论你将它应用于哪个操作数。

答案 1 :(得分:0)

如果您可以从catMaybe中挤出Data.Maybe,则可以在列表中使用Just / Nothing

foo x = catMaybes . (:[]) $ if x == 0
                               then Nothing
                               else Just x