函数式编程 – SML / NJ的新功能.从列表列表中添加数字

Define a function which computes the sum of all the integers in a
given list of lists of integers. No ‘if-then-else’ or any auxiliary
function.

我是函数式编程的新手,并且在使用SML时遇到了正确的语法问题.为了解决这个问题,我尝试使用模式匹配创建一个函数,只需添加列表的前两个元素.在我开始工作之后,我将使用递归来添加其余元素.虽然,我甚至似乎无法编译这个简单的函数.

fun listAdd [_,[]] = 0
|   listAnd [[],_] = 0
|   listAnd [[x::xs],[y::ys]] = x + y;

最佳答案

fun listAdd [] = 0
  | listAdd ([]::L) = listAdd L
  | listAdd ((x::xs)::L) = x + listAdd (xs::L)

应该做你想要的样子.

此外,看起来您的函数问题的一部分是您在不同的子句中为函数提供不同的名称(listAdd和listAnd).

点赞