2016-12-28 9 views
2

я получаю несвязанную ошибку значения в этом сегменте коды:ошибка Ocaml несвязанного значение

let count element list = 
    let counter = 0 in 
    for i = 0 to List.length list do 
     if element == List.i list then 
     counter = counter + 1 
     else 
     counter = counter 
    done ;; 

код должен взять список и значение от пользователя, а затем подсчитать, сколько раз появляется значение этот список, но я получаю эту ошибку:

Error: Unbound value List.i 

Я еще новичок в OCaml любая помощь будет принята с благодарностью.

ответ

6

List.i не существует в Ocaml.

Вы пытаетесь проверить, соответствует ли элемент i th элементу списка.

List.nth делает трюк:

List.nth list i 

instead of

List.i list 

Окончательный код:

let count element list = 
    let counter = ref 0 in 
    for i = 0 to (List.length list - 1) do 
     if element == List.nth list i then 
     counter := !counter + 1 
     else 
     counter := !counter 
    done ; 
!counter;; 
+0

Спасибо так много он работал, но после того, как это делать и разработку некоторых ошибок типа я получил другую ошибку, – Ibo

+0

я получил эта ошибка 'для i = 0 в список List.length делает ^^^' – Ibo

+0

со стрелками, указывающими на ошибку синтаксиса и указанную синтаксическую ошибку – Ibo