【发布时间】:2019-06-14 04:09:33
【问题描述】:
我想将一个列表作为参数传递给一个函数,该函数将该列表的每个元素乘以 3。我必须使用递归(我知道怎么做)和映射函数(有问题)。
我正在尝试将列表作为参数传递,正如我在其他帖子中看到的那样,但它不起作用。
fun x = 3 * x + 1
mult :: [Int] -> [Int]
mult [a] = map fun [a]
我试过的代码显示: 例外:x:函数 mult 中的非详尽模式
【问题讨论】:
-
这些帖子中没有“地图”一词。
-
确实没有。但是骗子应该足以解决“非详尽模式”异常,这是您问题的症结所在。关于映射/递归...
map已经在一个列表上工作,所以要么使用递归,要么使用map。我不明白你如何能有效地同时使用两者。 -
我不想一起用。我有一个作业,我必须以三种不同的方式(映射、递归和列表推导)解决问题。我的帖子是明确的,而不是那些。
-
Ah... "我必须使用递归 [...] 和映射函数" ← 我以为 "and" 这里指的是你想同时使用两者。单独运行给定的代码也不会导致任何错误,您应该包括如何调用
mult(例如mult [1, 2, 3])。总的来说,你的问题可能更清楚。我个人发现“函数 noThirds 中的非详尽模式”问题足够清晰,可以用非详尽模式解决您的问题。不过威尔下面的回答也不错。
标签: haskell pattern-matching non-exhaustive-patterns