Haskell试图在if上实现null函数

Haskell试图在if上实现null函数,haskell,Haskell,所以基本上我有一个关于ym作业的问题,那就是:创建一个函数,使用前奏函数检查列表是否为空 我看到了null函数,我想使用它并打印消息。 因此,我尝试了以下方法: notEmpty :: [Int] -> [Char] notEmpty [x] = if (null[x]) then "False" else "True" 如果调用notEmpty[],它会给出以下错误:notEmpty函数中的非穷举模式 经过几次学习,我得出了以下结论: notEmpty :: [Int] -> [

所以基本上我有一个关于ym作业的问题,那就是:创建一个函数,使用前奏函数检查列表是否为空 我看到了null函数,我想使用它并打印消息。 因此,我尝试了以下方法:

notEmpty :: [Int] -> [Char]
notEmpty [x] = if (null[x]) then "False" else "True"
如果调用notEmpty[],它会给出以下错误:notEmpty函数中的非穷举模式 经过几次学习,我得出了以下结论:

notEmpty :: [Int] -> [Char]
notEmpty [] = "False"
notEmpty [x] = if (null[x])then "False" else "True"
但在此之后,我尝试了以下输入:notEmpty[1,2],它给出了相同的错误

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

[x]并不意味着一个名为x的列表。它表示一个包含一个元素的列表,其中一个元素称为x。只需使用x而不是[x],您的第一种方法即可:

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

一旦第一个定义无法匹配模式,您就已经知道第二个定义中的参数不是空的。notEmpty[]=False;notEmpty u=真。@切普纳,但那不使用前奏函数。@JosephSible notEmpty[]=const False joeOmg!真不敢相信!非常感谢,先生!你救了我一天@如果我的答案解决了您的问题,请用复选标记图标将其标记为已接受。