聲明
let dom_rank r1 r = (num_order r1) > (num_order r)
dom_rank Seven Eight
是同樣的事情作爲
let dom_rank r1 r = (num_order r1) > (num_order r) dom_rank Seven Eight
或
let dom_rank r1 r = (num_order r1) > ((num_order r) dom_rank Seven Eight)
因爲函數applica優先於二元運算符如>
。考慮到這一點,編譯器的錯誤信息應該很清楚。
要在互動的頂層,你可能會寫他們兩個語句單獨作爲
let dom_rank r1 r = (num_order r1) > (num_order r);;
dom_rank Seven Eight;;
,或者
let dom_rank r1 r = (num_order r1) > (num_order r)
let dr78 = dom_rank Seven Eight
在模塊定義
,也給名字給你計算值。
的常用方法僅觸發其副作用的功能是使用特質
let() = print_endline "Hello, World!"
不要使用OCaml的互動循環和常規節目之間的差異相混淆。在OCaml交互循環中,可以評估一個表達式,它具有打印結果值的副作用。在編寫OCaml程序時,評估表達式是一個錯誤,我們應該使用let
綁定。在OCaml交互循環中,;;
序列可用於分隔短語。雖然在編寫常規程序時也支持這種方式,但這通常被認爲是增強交互式頂層代碼和常規程序代碼之間兼容性的一種拙劣構造。
;
是用於在一個表達式中組合多個表達式的序列運算符。它應該不會與;;
混淆,它只是表示句子的結尾。
哦!非常感謝 !這正是我所困惑的:),你能解釋一下關於';'和';;'的用法嗎? :) – cyc115 2014-09-07 02:51:17
';;'只是一個與頂層相關的人造物,它需要用信號表示評估短語的結束 - 注意一個單獨的「;」不會。編譯器不需要這個短語語句的結尾,因爲它不需要儘快評估一個句子,並且無論如何都有文件標記的結束。編譯器也可以理解'';''作爲一種方便。 – 2015-08-29 16:48:58