2013-11-15 12 views
9

Niedawno zacząłem uczyć się F # i dzisiaj dostałem błąd, którego nie mogę się pozbyć. Mam następujący kod:F # Niekompletna konstrukcja strukturalna

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 

Z tym kodem dostaję następujący błąd:

Incomplete structured construct at or before this point in binding

Niestety nie mam pojęcia jak to naprawić. To jest przykład kodu z książki Programming F # 3.0.

Byłbym bardzo wdzięczny za każdą odpowiedź, która pomoże mi zrozumieć, jak uniknąć takich błędów w przyszłości.

Odpowiedz

11

Musisz zdefiniować typy i funkcje we właściwym kontekście (poza funkcją).

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

To było szybkie. Dziękuję Ci bardzo – Divh

Powiązane problemy