Ocaml错误:未绑定的记录字段标签长度

时间:2012-04-23 18:32:52

标签: ocaml

这是我遇到的错误,我不明白为什么:“错误:未绑定的记录字段标签长度” 不知道吗?

let rastavi str =
    let sublist = ref [] in
    let list = ref [] in
    for i = ((str.length str)1) [down]to 0 do
   if str.[i] =' '    then (str.[i] :: !sublist)
  else (list := (!sublist:: !list))   sublist = [] 
  done ;; 

1 个答案:

答案 0 :(得分:4)

您正在使用OO表示法来获取字符串的长度。 OCaml使用功能表示法。所以它看起来像这样:

String.length str

不喜欢这样:

str.length (* OO notation, not in OCaml *)

修改

一边评论:这个解决方案非常迫切需要解决这个问题。如果您正在尝试学习FP思维模式,那么您应该尝试以递归和不可变的方式进行思考。由于这看起来像家庭作业,很可能是你想要的功能性解决方案。

但是原始代码中还有一些其他问题:

  1. 你有两个表达式彼此相邻,两者之间没有任何内容。如果你想“做”两件事,你需要用分号;分隔它们(但这是必要的风格)

  2. 您正在使用=来比较两个值是否相等。如果要为引用分配值,则需要使用:=。 (势不可挡的风格,再次。)