Да. С полностью функциональной точки зрения (как это практикуется в Haskell) все является функцией ( На самом деле все ).
А поскольку чисто функциональный язык запрещает любые изменения, это определение не несет никаких противоречий.
Есть ли разница?
Ну, OCaml не является чисто функциональным. Это означает, что функциям разрешено выполнять побочные эффекты, которые немного отличаются от определения постоянного значения.
Этот код (F # здесь - но очень похож на Caml) будет вполне допустимым.
let name =
Console.Write("Enter your Name: ")
Console.ReadLine()