我一直在将字符列表转换为int列表时遇到问题。我的目标是基本上取一个数字,如325,并返回一个[3,2,5]的列表。到目前为止,我所做的是取出数字,然后将其转换为字符串,然后将其分解为char数组。然后我想将每个字符转换为相应的int。当我将char列表映射到fn c => Char.ord(c)时,char列表变成了一个?.int列表,这阻止了我对它进行操作(+, - )。我是ML新手,对其类型系统没有很强的把握,但对我来说似乎很奇怪。将char列表转换为int列表时将ML列表打字
下面的代码:
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列表类型。原始问题可以发现为Project Euler problem 20。
我添加了一些通用代码反馈给我的答案。 –