Приходя в 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
, сообщая, что началои end связаны с Sys.time
, а не с возвращаемым значением Sys.time
.
Это поведение, которое я пытаюсь получить, не OCamly?Хочу ли я делать вещи по-другому?Я просто упускаю что-то совершенно очевидное?