2017-08-05 5 views
1

私はOCamlの入門ガイドに従っています。私が取り組んでいるプログラムが動作していないので、理由を説明できるかどうか疑問に思っていました。OCamlでのテスト

let profit_500 : int = 
    let price = 500 in 
    let attendees = 120 in 
    let revenue = price * attendees in 
    let cost = 18000 + 4 * attendees in 
    revenue - cost;; 

let test() : bool = 
    (profitTest 500) = profit_500 
;; run_test "profit at $5.00" test 

行(profitTest 500)= profit_500私はエラー:無制限の値益テストを受けています。なぜ誰かが説明できますか?これはOCamlへの私の最初の旅行ですが、私はいくつかのJavaを知っています。誰かが最後の理由を説明することもできますか? profit_500の後ではなくrun_testの前に行く(それは同じですか?)それはどのような「結合していない」手段を綴るために役立つかもしれない助け

+0

OCAMLについてはわかりませんが、(profitTest 500)= profit_500というのは何を期待していますか?それは非常に外見になります。また、おそらくあなたはそれらの 'let ... in'をすべて必要としません。私はあなたが単一の 'let'の下ですべてのバインディングをグループ化できるはずだと思います。 – Carcigenicate

+0

@Carcigenicate OCamlはすべてのバインディングに 'let'を必要とします。その構文は正しい。 –

+0

@ElanHamburger本当ですか?それは残念です。私の悪い。 – Carcigenicate

答えて

2

ため

感謝。バインドされていないシンボル(名前)は定義されていないシンボルです。だからOCamlはあなたにprofitTestの定義を与えていないことを伝えています。 @ElanHamburgerによると、これは本当です。表示されたコードにその名前の関数の定義はありません。

ガイドの例に従っている場合は、testの定義の前に、profitTestの定義を(ガイドの)定義する必要があります。

+0

https://1drv.ms/i/s!AgZffw7HX09VgRXk-P57a7fwPFAt これはページです。ありがとう! – user402517

+0

これはディスカッションの途中にある1ページです。ほとんどの場合、 'profitTest'の定義は以前のページに表示されます。 –