Why do F# functions evaluate before they are called?

你说的曾经没有我的故事 提交于 2019-11-29 11:57:34

Function bodies are evaluated when the function is called, just as you want. Your problem is that foo is not a function, it's a variable.

To make foo a function, you need to give it parameters. Since there are no meaningful parameters to give it, the unit value (()) would be the conventional parameter:

let foo () =
    Console.WriteLine("bar")

Accordingly a call of this function would look like foo ().

I believe let foo = x is essentially a static value that gets evaluated immediately, once. If you want a parameterless function, you would need let foo () = Console.WriteLine("bar"), using it as foo ().

If you don't want to have to use the parentheses when calling, something like type Test () = static member foo with get () = System.Console.WriteLine("bar"), using it as Test.foo should work.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!