2011-01-03 8 views
2

私はどこに行っても問題は見つからないようです。コンパイラが私にこのエラー: "error FS0039: The value or constructor 'dotProduct' is not defined"を与えています。しかしdotProductは現在定義されています。このコードで何が問題なのかわからない... F#

Visual Studio 2010では、式が未完成であることを示す2番目のlet(let rec dotProductAux list1 list2 acum =)も強調表示されています。

let dotProduct list1 list2 = 
    let rec dotProductAux list1 list2 acum = 
     match list1 ,list2 with 
      | [],l | l,[] -> acum 
      | head1 :: tail1, head2 :: tail2 -> let updated = (head1 * head2) + acum 
               (dotProductAux tail1 tail2 updated) 

このコードの乗算と、このように2つのリストを追加します:私はF#にかなり新たなんだと、このコードの権利を取得するように見えることはできません

dotProduct [1;4;7] [3;4;1];; //(1*3) + (4*4) + (7*1) 

。どんな助け?

答えて

2

dotProductの本文には、dotProductAuxの定義が含まれていますが、実際の表現はありません。実際にdotProductAuxに電話する必要があります(let recの後にdotProductAux list1 list2 0という電話がありません)。

また、| [],[]| l,[] -> accumの場合は、第2のパターンが変数lをバインドするため、エラーが発生しますが、最初のパターンは無効です。実際には必要ないので、l_に置き換えることで修正できます。(これは既に編集でこれを修正済みです)。

+0

私はdotProductAuxの呼び出しを作成し、それは魅力的なように機能しました。どうもありがとう! – Derek

関連する問題