Гарантия присвоения возвращаемому значению функции в OCaml

Переходя к OCaml из Lisp, я очень смущен тем, когда функции возвращаются, а когда нет. Я скучаю по своей волшебной цитате! К счастью, в большинстве случаев OCaml, кажется, автоматически знает, когда я хочу, чтобы функция оценивалась, а когда нет. Однако я часто обнаруживаю, что пытаюсь назначить возвращаемое значение функции в выражении let, как показано ниже.

let start = Sys.time in
(*
 * do something here
 *)
 ;
let ending = Sys.time in
Printf.printf "did something in %f seconds\n" (ending -. start)

но затем ocamlc жалуется

Error: This Expression has type unit -> float
       but an expression was expected of type float

Сообщая мне, что начало и конец привязаны к Sys.time , а не возвращаемое значение Sys.time .

Это поведение, которое я пытаюсь получить, не связано с OCamly? Хочу ли я делать что-то по-другому? Мне просто не хватает чего-то совершенно очевидного?

6
задан Eli 12 September 2010 в 23:56
поделиться