Мне немного сложно понять, как вернуть каждому из обработанных символов значение int .
Функция должна работать так: val caesar = fn: int * int -> int
Итак, если k = 2466 и n = 2, то на выходе должно быть 4688
Надеюсь, код не слишком странно (я новичок в SML).
(* Load Libs *)
load "Int";
load "Real";
load "String";
load "Char";
load "List";
fun caesar (k, n) =
let
fun k_string (i) = Int.toString(i)
fun item_k_char (x, y) = Char.ord (List.nth (x, y))
val val_k_string = k_string(k)
val k_explode = String.explode(val_k_string)
val counter = ref 0
val counter_end = (String.size(val_k_string) - 1)
in
while (!counter >= counter_end) do (
item_k_char(k_explode, !counter) + n;
counter := !counter + 1
)
end;