我的代码的这一部分总是向我展示一些合成错误:ocaml REPL中的运算符。该错误发生在该行的let
"让rec rec ..."。可能是什么? 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))
)
答案 0 :(得分:2)
输入OCaml REPL的行实质上形成了OCaml模块。在模块的最外层,你可以拥有
let name = value
定义模块的全局命名值。
在您的情况下,您有let project (conditions, aTable) = value
。换句话说,您正在定义一个函数project
,它将一对值作为参数。
在模块最外层以外的任何地方,都没有全局名称。因此,每个let
必须跟in
后跟。这是project
函数定义中的情况,也是解释器所抱怨的内容。期望看到in
,或表达式的延续(即某种运算符)。
不清楚你的函数project
应该返回什么。 project
整体的类型是什么?