2017-08-05 45 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。有人可以解釋爲什麼最後;;在run_test之前而不是在profit_500之後(或者是相同的)?

感謝您的幫助

+0

我不知道OCAML,但你期待'(profitTest 500)= profit_500'做什麼?它看起來非常好。另外,你可能不需要所有那些「讓...進去」。我認爲你應該能夠將所有綁定分組在一個「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

這是討論中的一頁。 「profitTest」的定義幾乎可以肯定出現在前面的頁面上。 –