当一个函数接受list
作为其中一个可以为空的参数并且函数本身处理它为空(换句话说,它期望它也是空的)时,Haskell的方式是什么处理它:使用列表或列表中的可能?
答案 0 :(得分:8)
类型[a]
的值是一个列表。它被允许为空。类型Maybe [a]
的值为Nothing
或Just xs
,其中xs
可能为空列表。例如:假设您正在编写一张带纸的功能,并告诉您是否有购物清单,如果是,那么购物清单上有哪些商品。如果我为该功能提供一页乐谱,它将返回Nothing
。如果我给它一个带有标题阅读"购物清单"的页面,但没有别的,它将返回Just []
。如果我给它一个带有标题阅读"购物清单"和实际项目,它将返回Just ["Anchovy milkshake", "Potato juice", "Cow pies", "Chicken milk"]
。这将由类型Maybe [String]
表示。
答案 1 :(得分:0)
您可以使用模式匹配:
foo [] =
-- do something if list is empty
...
foo (x:xs) =
-- do something if list is not empty
...