Почему функции F # оцениваются перед вызовом?
Если я определю модуль как таковой:
module Module1
open System
let foo =
Console.WriteLine("bar")
Затем в интерактивном режиме
#load "Library1.fs" //where the module is defined
open Module1
я вижу
Панель [Загрузка c: \ users \ jj \ Documents \ visual studio 2015 \ Projects \ Library1 \ Library1 \ Library1.fs]
Указывая, что функция foo работала без меня, даже не вызывая ее!
Как / почему это происходит? Есть ли способ предотвратить это?
Я знаю, что возвращаемое значение foo равно какому-либо значению (Console.Writeline ("bar")), и что нет никаких причин, которые нельзя оценить "немедленно?" (наверное, когда модуль загружен?) - но есть ли способ предотвратить это? Если функции моего модуля изменяют состояние некоторых других вещей, могу ли я гарантировать, что они не будут обрабатываться до тех пор, пока не будут вызваны?