我一直在將字符列表轉換爲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。
我添加了一些通用代碼反饋給我的答案。 –