【发布时间】:2013-04-10 06:15:18
【问题描述】:
如何在 Haskell 中编写一个函数,该函数接受一个列表和一个数字,然后删除所有大于该数字的元素并返回该列表。
删除 [5, 4, 3, 9, 1 ] 5 应该返回 [5,4,3,1]
我写了下面的方法,当它达到大于给定的数字时,它会变成无限循环。我要出去 [5,4,3 然后程序没有结束。
remove l1 x = if (null l1 == True)
then l1
else if (head l1 > x)
then remove (drop 0 l1) x
else ((head l1) : remove (tail l1) x)
这是我第一次尝试 Haskell 程序,请建议我在这里做错了什么。
谢谢
【问题讨论】:
-
你得到了无限循环,因为
then remove (drop 0 l1) x你在同一个列表中重复出现,drop的第一个参数表示要删除多少元素,你输入错误drop 0而不是drop 1你需要。
标签: haskell