首页 > 解决方案 > Haskell 试图在 if 上实现 null 函数

问题描述

所以基本上我对 ym 作业有一个问题,上面写着:“使用前奏函数创建一个检查列表是否不为空的函数”我看到了 null 函数,我想使用它并打印消息。所以我尝试了以下方法:

notEmpty :: [Int] -> [Char]
notEmpty [x] = if (null[x]) then "False" else "True"

如果我调用 notEmpty [],它会给我这个错误:Non.Exhaustive patterns in function notEmpty 经过几次学习我想出了这个:

notEmpty :: [Int] -> [Char]
notEmpty [] = "False"
notEmpty [x] = if (null[x])then "False" else "True"

但在此之后,我尝试了以下输入:notEmpty[1,2] 它给了我同样的错误。

我的问题是,当我运行 null [1,2] 时,它给了我 False,那么我做错了什么?

标签: haskell

解决方案


[x]并不意味着“一个名为x”的列表。它的意思是“一个包含一个元素的列表,其中一个元素被称为x”。只需使用x而不是[x],您的第一种方法将起作用:

notEmpty :: [Int] -> [Char]
notEmpty x = if (null x) then "False" else "True"

推荐阅读