所有的功能都是立即运行的,如何只运行main函数?

Ton*_*ony 2 f#

我正在学习F#,并且有这样的代码:问题是当我运行项目时所有函数都是立即运行的.来自C#,我想象只有Main函数会运行.如何解决这个问题?这是一些缩进问题吗?

open System
open System.Windows.Forms 

let form 
    = 
        new Form
            (
                Width = 400, 
                Height = 300, 
                //Visible = false, 
                Text = "Hello World F#"
            )

let MyFunction1 
    = 
        System.Diagnostics.Process.Start("calc.exe")

let AnotherFunction 
    = 
        let agora = DateTime.Now
        let fn = @"C:\temp\testef.txt"
        System.IO.File.WriteAllText (fn, "Olá " + agora.ToString())
        System.Diagnostics.Process.Start("notepad.exe", fn)


[<EntryPoint>]
let main argv 
    =
        let f = form.ShowDialog()
        f |> Console.WriteLine
        0
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Gus*_*Gus 5

您需要向函数添加至少一个参数,否则它们将是不是函数的值.

如果你没有任何东西要传递给函数,那么它们应该接收一个单元参数,例如这里它应该是:

let MyFunction1 ()
    = 
        System.Diagnostics.Process.Start("calc.exe")
Run Code Online (Sandbox Code Playgroud)

当let绑定没有参数时,它就变成一个值,并立即执行.

切换到函数式编程时的困惑是,其实功能也值,一等公民,你可以通过左右,但在非偷懒的语言,如F#,他们只有当你在调用点提供他们的论据执行代码.