我真的不习惯使用函数式语言...所以我真的很努力学习和使用Ocaml来大学的课堂项目...在这里我真的会用到一些帮助...这就是我的问题: 我正在尝试使用Ocaml进行小型编译器的工作,因此我试图通过在我的int列表“ lista_valores”的元素上添加1来使i ++在C ++中取得成功,该变量具有与变量名相同的索引在字符串列表“ lista_variaveis”中。但是出于某种原因,在添加For循环以使变量递增之后,Ocaml会在代码末尾继续引发语法错误。看看:
let rec print_list = function
[] -> ()
| e::l -> print_int e ; print_string " " ; print_list l
let pega_indice = fun s lista resposta ->
let tamanho_lista = List.length lista in
let tamanho_string = String.length s in
let char = ref "0" in
let existe = ref "0" in
let condicao = ref 0 in
try
for i = 0 to (tamanho_lista-1) do
let elemento = (List.nth lista i) in
let tamanho_elemento = (String.length elemento) in
if tamanho_elemento = tamanho_string then
for j = 0 to (tamanho_elemento - 1) do
char := String.make 1 (String.get s j);
existe := String.make 1 (String.get elemento j);
condicao := if char = existe then
(!condicao + 1)
else
0;
done;
resposta := if !condicao = tamanho_elemento
then i
else -1;
if !resposta = i then raise Exit;
done;
false
with Exit -> true;;
let lista_variaveis = ref ["var1"; "var2"];;
let append_item lst a = lst @ [a];;
let lista_valores = ref [1; 5];;
let lista_novos_valores = [];;
let tamanho_listas = List.length !lista_valores;;
let resposta = ref 12314;;
let elemento = 0;;
print_endline("Digite a variavel:");;
let input = read_line();;
pega_indice input !lista_variaveis resposta;;
print_endline("indice da variavel:");;
print_endline(string_of_int !resposta);;
print_endline("incrementando...");;
for i = 0 to (tamanho_listas-1) do
begin
if (i = !resposta) then lista_novos_valores@[(List.nth !lista_valores i) +1] else lista_novos_valores@[List.nth !lista_valores i];
end;
print_list lista_novos_valores;;
感谢有兴趣尝试帮助的每个人!
答案 0 :(得分:1)
在代码末尾,您有一个do
,但没有匹配的done
。