我有一个函数 foo 接受一个字符。我想将该函数映射到字符串中的每个字符。
fun foo (ch : char) =
ch;
fun bar (str : string) =
map foo [(str)];
显然,由于将字符串应用于需要 char 的函数,这将不起作用。所以我尝试使用 String.explode(str) 将其分解为一个 char 数组,但是我似乎无法映射数组中的每个 char 并将 char 应用于 foo 函数。
fun foo (ch : char) =
ch;
fun bar (str : string) =
map foo [(String.explode(str))];
如何将函数映射到字符串中的每个字符?
编辑:我想将 foo 更改为采用 2 个参数
fun foo(ch : char, i : int) =
ch;
fun bar(str : string) =
map foo (String.explode(str), 1);
但这给了我一个大亨不匹配
operator domain: (char * int) list
operand: char list * int
为什么以前 map 函数可以理解 String.explode(str) 来映射每个字符,但现在它把它视为一个完整的字符列表?
编辑2:没关系,想通了。
fun bar(str : string) =
map (fn x => foo (x, 1)) (String.explode(str));