Задача, над которой я работаю, должна принимать список целых чисел и возвращать среднее значение этих чисел. Он должен соответствовать определенному формату, который выглядит так...
fun average (n::ns) =
let
val (a,b) = fold? (?) ? ?
in
real(a) / real(b)
end;
Мне разрешено только заменять вопросительные знаки, и я не могу использовать какие-либо встроенные функции. У меня есть рабочее решение, но оно не соответствует этим правилам.
fun average (n::ns) =
let
val (a,b) = ((foldl (fn(x, y)=>(x+y)) n ns), length(ns)+1)
in
real(a) / real(b)
end;
Итак, есть ли способ заставить функцию fold возвращать кортеж? Что-то вроде этого - это то, что я хочу сделать, но, очевидно, я не могу этого сделать...
val (a,b) = ((foldl (fn(x, y)=>(x+y), count++) n ns)