2013-11-15 61 views
9

我最近開始學習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 

有了這個代碼,我收到以下錯誤:

Incomplete structured construct at or before this point in binding

不幸的是我不知道如何解決它。這是本書編程F#3.0的代碼示例。

我非常感謝任何一種答案,可以幫助我瞭解如何避免將來出現這類錯誤。

回答

11

您需要在正確的上下文中定義類型和函數(在函數之外)。

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 
+0

這很快。非常感謝你 – Divh