文字を受け取る関数 foo があります。その関数を文字列内の各文字にマップしたいと思います。
fun foo (ch : char) =
ch;
fun bar (str : string) =
map foo [(str)];
char を期待する関数に文字列が適用されているため、明らかにこれは機能しません。そのため、 String.explode(str) を使用して char 配列に分割しようとしましたが、配列内の各 char をマップして foo 関数に char を適用することができないようです。
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
以前は String.explode(str) が map 関数によって各 char にマップされると理解されていたのに、今では完全な char リストとして認識されているのはなぜですか?
編集2:気にしないで、それを理解しました。
fun bar(str : string) =
map (fn x => foo (x, 1)) (String.explode(str));