Я хотел бы создать функцию в OCaml, которая возвращает карту того, как часто каждый символ встречается в файле.Например, рассмотрим файл, содержащий это:
AAAAA BB C
Этот вход будет производить эту карту:
{ ' ' -> 2, 'A' -> 5, 'B' -> 2, 'C' -> 1 }
Вот что у меня есть:
let usage = "usage: " ^ Sys.argv.(0) ^ " [OPTION]... [FILE]..."
let file = ref ""
let speclist = [
("-z", Arg.String (fun c -> file := c), " compress [FILE]");
("-d", Arg.String (fun d -> file := d), " decompress [FILE]");
]
let build_freq_map f =
let channel = open_in f in
function x ->
input_byte channel
let () =
Arg.parse
speclist
(fun x -> raise (Arg.Bad ("Bad argument: " ^ x)))
usage;
build_freq_map !file;
Но это не компилируется, говоря:
File "main.ml", line 19, characters 1-22:
Error: This expression has type 'a -> int
but an expression was expected of type unit
Как бы я изменил свой код так, чтобы build_frequency_map возвращал карту символов и частот файла?