処理された各文字を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;