我有一個函數foo需要一個字符。我想將該函數映射到字符串中的每個字符上。如何在SML中的字符串中映射每個字符
fun foo (ch : char) =
ch;
fun bar (str : string) =
map foo [(str)];
顯然,這是行不通的,由於字符串被應用到期望一個字符的功能。所以我嘗試使用String.explode(str)將其分解成一個char數組,然後我似乎無法映射數組中的每個char並將char應用於foo函數。
fun foo (ch : char) =
ch;
fun bar (str : string) =
map foo [(String.explode(str))];
如何在字符串中的每個字符上映射函數?
編輯: 我想改變富拿2個參數
fun foo(ch : char, i : int) =
ch;
fun bar(str : string) =
map foo (String.explode(str), 1);
但是,這給了我一個tycon不匹配
operator domain: (char * int) list
operand: char list * int
的是如何來到以前String.explode(STR)瞭解映射函數映射到每個字符,但現在它將其視爲一個完整的字符列表?
編輯2:沒關係,想通了。
fun bar(str : string) =
map (fn x => foo (x, 1)) (String.explode(str));
如果你想避免昂貴的爆炸/破滅,你也可以使用'CharVector.map',其類型爲'(字符 - >字符) - >字符串 - > string'(HTTP:// WWW .standardml.org /基/單vector.html#MONO_VECTOR:SIG:SPEC)。 – 2013-04-21 18:52:22