Синтаксическая ошибка ocaml в режиме REPL - PullRequest
0 голосов
/ 06 мая 2018

Эта часть моего кода всегда показывает некоторую ошибку синтаксиса: ожидается оператор в ocaml REPL. Ошибка находится на let строки "let rec projected ...". Что бы это могло быть? conditions определяется как string list, а aTable - (string list * string list* (string list) list)

 let project (conditions, aTable)=(
    let trueFalseList = match aTable with 
        _,cols,_ -> dataMatcher(cols, conditions)

    let rec projected (aTable, trueFalseList) = match aTable with
        name,[],[] -> name,[],[]
      |name,cols,[] -> newLineMaker ((List.hd cols), trueFalseList)::projected(name,(List.tl cols),[])
      |name,cols,vals -> newLineMaker ((List.hd vals), trueFalseList)::projected(name,cols,(List.tl vals)) 
  )

1 Ответ

0 голосов
/ 06 мая 2018

Строки, введенные в OCaml REPL, по существу образуют модуль OCaml. На самом внешнем уровне модуля вы можете иметь

let name = value

для определения глобального именованного значения модуля.

В вашем случае у вас есть let project (conditions, aTable) = value. Другими словами, вы определяете функцию project, которая принимает пару значений в качестве параметра.

В любых местах, кроме самого внешнего уровня модуля, глобальных имен нет. Таким образом, каждый let должен сопровождаться in. Это относится к определению вашей project функции, и именно на это жалуется переводчик. Ожидается увидеть in или продолжение выражения (то есть некоторый оператор).

Непонятно, что ваша функция project должна возвращать. Какой тип project в целом?

...