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