2013-11-15 2 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

Смежные вопросы