Al llegar a OCaml desde Lisp, me encuentro muy confundido acerca de cuándo las funciones vuelven y cuándo no. ¡Extraño mi cita mágica! Afortunadamente, la mayoría de las veces, OCaml parece saber automágicamente cuándo quiero que se evalúe una función y cuándo no. Sin embargo, frecuentemente intento asignar el valor de retorno de una función en una expresión let, como la siguiente.Asignación de garantía para el valor de retorno de una función en OCaml
let start = Sys.time in
(*
* do something here
*)
;
let ending = Sys.time in
Printf.printf "did something in %f seconds\n" (ending -. start)
pero luego se queja ocamlc
Error: This Expression has type unit -> float
but an expression was expected of type float
Me dice que inicio y final están obligados a Sys.time
, no el valor de retorno de Sys.time
.
¿Este comportamiento que estoy tratando de obtener no es OCamly? ¿Quiero hacer las cosas de otra manera? ¿Me estoy perdiendo algo completamente obvio?