传递列表或列表的列表?

时间:2014-07-21 08:29:38

标签: haskell

当一个函数接受list作为其中一个可以为空的参数并且函数本身处理它为空(换句话说,它期望它也是空的)时,Haskell的方式是什么处理它:使用列表或列表中的可能?

2 个答案:

答案 0 :(得分:8)

类型[a]的值是一个列表。它被允许为空。类型Maybe [a]的值为NothingJust 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
  ...