F#不完整的结构化构造

时间:2013-11-15 19:46:36

标签: f#

我最近开始学习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

使用此代码我遇到以下错误:

  

绑定中此点或之前的不完整结构化构造

不幸的是我不知道如何修复它。这是编程F#3.0的代码示例。

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

1 个答案:

答案 0 :(得分:15)

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

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