Мне нужна функция, которая возвращает произведение чисел в строке:
SomeFunc("1234") -> 1 * 2 * 3 * 4 = 24
Вот мой код:
lists:foldr(fun(X, Y) -> X * Y end, 1, "1234").
Но я получаю 6497400.
Почему и как я могу исправить код?
Ваш код умножает коды символов ascii, то есть 49 * 50 * 51 * 52. Чтобы получить желаемый результат, используйте
lists:foldr(fun(X, Y) -> (X-$0)*Y end, 1, "1234")
, где $0 - это код ASCII для символа '0'.
$0