У меня возникла проблема с преобразованием списка символов в список int. Моя цель состоит в том, чтобы в основном взять число, такое как 325, и вернуть ему список из [3,2,5]. То, что я сделал до сих пор, - это взять число, а затем преобразовать его в строку, которая затем будет взорвана в массив символов. Затем я хочу преобразовать каждый символ в соответствующий int. Когда я отображаю свой список символов в fn c => Char.ord (c), список char становится списком? .int, что мешает мне выполнять операции (+, -) на нем. Я новичок в ML и не очень понимаю его систему типов, но мне кажется странным.Наложение списка ML при преобразовании списка символов в список int
Вот код:
open IntInf;
fun fact_helper (0, r : int) = r
| fact_helper (n : int, r : int) = fact_helper (n-1, n*r);
fun factorial n:int = fact_helper (n, 1);
fun num_to_digits n =
let val digits_as_chars = explode (IntInf.toString n);
in map (fn c => (Char.ord c)) digits_as_chars
end;
В идеале я хотел бы быть в состоянии сделать fn c => (Char.ord c) - 48
в моей функции отображения, чтобы получить истинное значение цифры. Я уже делал что-то подобное раньше, и он работал тогда, но не сейчас, и я не уверен, почему я получаю ? .int list. Оригинальная проблема может быть найдена как Project Euler problem 20.
Я добавил некоторые общие замечания код на мой ответ. –