如何使用列表推导式编写Haskell函数删除列表中所有最大元素
正确实现代码
ted :: Ord a => [a] -> [a] ted [] = [] ted xs = [x | x <- xs, x < maximum xs]
逻辑说明
- 首先匹配空列表输入,直接返回空列表,避免调用
maximum处理空列表抛出异常 - 非空列表的列表推导式逻辑:遍历列表所有元素,仅保留小于列表最大值的元素,自动过滤掉所有等于最大值的实例,符合移除所有最大元素出现的需求
现有代码问题
- 你当前编写的过滤偶数逻辑和需求完全无关,Haskell中取余运算符不是
%,取余操作需要用mod函数 - 你不需要额外导入
Data.List和Data.Function模块,上述实现仅依赖Prelude内置函数即可完成
内容的提问来源于stack exchange,提问作者Josh Chang
相关产品推荐
相关产品推荐

