haskell - 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,那么我做错了什么?
解决方案
[x]
并不意味着“一个名为x
”的列表。它的意思是“一个包含一个元素的列表,其中一个元素被称为x
”。只需使用x
而不是[x]
,您的第一种方法将起作用:
notEmpty :: [Int] -> [Char]
notEmpty x = if (null x) then "False" else "True"
推荐阅读
- sql - 有未捕获的错误:在“(”附近:尝试运行查询时出现语法错误
- python - 如果 Keras CNN 模型是在 28x28 图像上训练的,如何准确预测更高分辨率的图像?
- javascript - 创建模块化 SVG 动画的最佳方法
- android - 在 Xamarin 中使用 Device.OpenUri(uri) 在浏览器中打开 ftp 链接时应用程序崩溃
- android - finish() 方法在 Android 中的 OptionsItemSelected 方法中不起作用
- java - 似乎无法正确反转循环输出
- elasticsearch - 如何在 Elasticsearch 中创建多类型索引?
- gradle - IntelliJ IDEA 和 Gradle 自动下载
- regex - 如何设置正则表达式的限制?(最小和最大长度)
- c# - 加入 LINQ 查询语法:将右侧移到左侧