我一直在努力嘗試理解這一點,如果努力工作就會傷害我與OCaml的關係,所以我想我會尋求幫助。不理解Ocaml類型簽名
let line_stream_of_channel channel =
Stream.from
(fun _ ->
try Some (input_line channel) with End_of_file -> None);;
好冷靜的簡單功能,清楚它下面的簽名:
val line_stream_of_channel : in_channel -> string Stream.t = <fun>
in_channel是參數和Stream.t是返回值。
現在爲什麼是OCaml中,我不能做:
Stream string
,而是我必須做
string Stream.t
看着the type signature of Stream並沒有真正得到我到任何地方無論是。你必須做不自然的
string list
而非自然
list string
但是,什麼是特別奇怪的是的「.T」部分我注意到有類似列表的東西這個相同的語法怪事上面的Stream類型。
任何人都可以解釋這裏發生了什麼,爲什麼事情是這樣做的?我已經在OCaml上使用了關於顯式類型簽名,類型等的教程,並且通常他們會回到這裏來回答非常具體的問題,這些問題對我沒有任何幫助。
謝謝!