Я хотел знать, есть ли в OCAML способ вернуть длину строкового элемента списка строк и самого элемента? Я хочу сделать что-то вроде этого:
let (length_of_element,element) = List.map String.length ["Hello"; "World!"] in .....
, и я хочу, чтобы ключевое слово in передавалось в следующую часть кода, length_of_element
, которая является длиной элемента. «Hello» (если мы находимся на l oop 0) и сам элемент, который является «Hello» (если мы на l oop 0)
UPDATE
let () =
let t = Sys.time() in
let args_n = Array.length Sys.argv - 1 in
let args_list = Array.to_list (Array.sub Sys.argv 1 args_n) in
List.iter (fun element ->
let length_of_element = String.length element in
let text = check_if_file(List.nth args_list 1) in
let int_ls = search (to_list_ch element) text length_of_element) check_if_file(List.nth args_list 0 ) in
if (List.length int_ls)> 1 then print_string "pattern found at characters "
else if (List.length int_ls) = 1 then print_string "Pattern found at character "
else print_string "No patterns found."
;
print_ls int_ls;
Printf.printf "Execution time: %fs\n" (Sys.time() -. t);;
В моем случае использования этой функции check_if_file(List.nth args_list 0 )
- это мой список.
Я пытался реализовать то, что Гийом Мелкионд сказал мне в своем ответе, но я получить эту ошибку:
Ошибка: синтаксическая ошибка: ожидается оператор.
(Ошибка указывает на эту строку:
let int_ls = search (to_list_ch element) text length_of_element) check_if_file(List.nth args_list 0 ) in
Кто-нибудь будет откуда возникла эта ошибка?
Любая помощь будет принята с благодарностью.