0

これは私が得ているエラーであり、理由がわかりません:「エラー: バインドされていないレコード フィールド ラベルの長さ」 誰か知っていますか?

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 ;; 
4

1 に答える 1

4

文字列の長さを取得するためにOO表記を使用しています。OCaml は関数表記法を使用します。したがって、次のようになります。

String.length str

このようではありません:

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

編集:

補足: この解決策は、この問題に対する非常に重要な解決策です。FP の考え方を学ぼうとしている場合は、再帰的かつ不変的に考えるようにしてください。これは宿題のように見えるので、機能的なソリューションが必要な可能性が非常に高いです。

ただし、元のコードには他にもいくつかの問題があります。

  1. 間に何もない 2 つの式が隣り合っています。2 つのことを「実行」したい場合は、セミコロンで区切る必要があります;(ただし、これは命令スタイルです)。

  2. =2 つの値が等しいかどうかを比較する whichを使用しています。参照に値を割り当てたい場合は、 を使用する必要があります:=。(命令型のスタイルです。)

于 2012-04-23T18:50:38.127 に答える