haskell - 功能安全尾中的非详尽模式
问题描述
我的代码有什么问题?
safetail (x:xs)= if null []==True then xs else error "Empty"
当我运行我的代码时,它向我显示了一个异常:
Input safetail [] *** Exception: safetail.hs:1:1-62: Non-exhaustive patterns in function safetail
解决方案
您需要使用两种情况;模式匹配甚至阻止您的函数在空列表上被调用(成功)。
safetail [] = error "Empty"
safetail (_:xs) = xs
也就是说,对于名称中带有“安全”的函数会引发运行时异常,这具有一定的讽刺意味。要么返回一个空列表
safetail :: [a] -> [a]
safetail [] = []
safetail (_:xs) = xs
或更改您的函数类型以使其总计。例如,
safetail :: [a] -> Maybe [a]
safetail [] = Nothing
safetail (_:xs) = Just xs
推荐阅读
- file-upload - 如何上传超过 2MB 的文件(yii2)
- java - 对两个链表求和时如何从余数中取 1?
- tensorflow - CUDA_ERROR_OUT_OF_MEMORY 仅在评估阶段
- python-3.x - 如何以表格格式格式化 Python 有序字典
- javascript - 超链接在手机上无法点击,在桌面上可以正常工作
- asp.net-core - 如何在 AspNetCore 2.2 NLog 中关闭 Microsoft 日志
- c# - 为什么函数没有递归地返回所有的孩子?
- api - 向数据库发送数据时如何进行加载
- c++ - boost::iostreams::::copy 似乎太慢了
- javascript - 使用门户反应打开新标签