不完整的结构化构造

不完整的结构化构造

我最近开始学习F#,今天我遇到了无法摆脱的错误。我有以下代码:

open System

[<EntryPoint>]
let main argv =

    type BinaryTree =
        | Node of int * BinaryTree * BinaryTree
        | Empty

    let rec printInOrder tree =
        match tree with
        | Node (data, left, right)
            -> printInOrder left
               printfn "Node %d" data
               printInOrder right
        | Empty
            -> ()

    let binTree =
         Node(2,
            Node(1, Empty, Empty),
            Node(4,
                Node(3, Empty, Empty),
                Node(5, Empty, Empty)
            )
    )

printInOrder binTree
0


有了这段代码,我得到以下错误:


绑定时或绑定时不完整的结构化构造


不幸的是,我不知道如何解决它。这是《 Programming F#3.0》一书中的代码示例。

我非常感谢任何可以帮助我理解将来如何避免此类错误的答案。

最佳答案

您需要在适当的上下文中(在函数外部)定义类型和函数。

open System

type BinaryTree =
    | Node of int * BinaryTree * BinaryTree
    | Empty

let rec printInOrder tree =
    match tree with
    | Node (data, left, right)
        ->  printInOrder left
            printfn "Node %d" data
            printInOrder right
    | Empty
        -> ()

let binTree =
    Node(2,
        Node(1, Empty, Empty),
            Node(4,
                Node(3, Empty, Empty),
                Node(5, Empty, Empty)
            )
    )

[<EntryPoint>]
let main argv =
    printInOrder binTree
    0

10-07 13:15