REPL模式下的ocaml语法错误

时间:2018-05-06 01:42:01

标签: syntax-error ocaml

我的代码的这一部分总是向我展示一些合成错误:ocaml REPL中的运算符。该错误发生在该行的let"让rec rec ..."。可能是什么? conditions定义为string listaTable定义为(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 :(得分:2)

输入OCaml REPL的行实质上形成了OCaml模块。在模块的最外层,你可以拥有

let name = value

定义模块的全局命名值。

在您的情况下,您有let project (conditions, aTable) = value。换句话说,您正在定义一个函数project,它将一对值作为参数。

在模块最外层以外的任何地方,都没有全局名称。因此,每个let必须跟in后跟。这是project函数定义中的情况,也是解释器所抱怨的内容。期望看到in,或表达式的延续(即某种运算符)。

不清楚你的函数project应该返回什么。 project整体的类型是什么?