2009-07-05 18 views
3

これは、コンパイルして動作します:は、なぜこれがF#でコンパイルされません

 
let rec HelloEternalWorld _ = 
    Console.ReadLine() |> printf "Input: %s\n" 
    HelloEternalWorld 0 

HelloEternalWorld 0 

これはコンパイルされません:

 
let rec HelloEternalWorld = 
    Console.ReadLine() |> printf "%s\n" 
    HelloEternalWorld 

HelloEternalWorld 

私はなぜ理解しようと?


let rec HelloEternalWorld() = 
    Console.ReadLine() |> printf "%s\n" 
    HelloEternalWorld() 


あなたは、単純な値から機能を区別するために括弧を必要とする引数なしで関数を定義するには:それはなかった場合には、コンパイルと同じように

答えて

7

あなたが不足しているすべては、括弧あります。

4

あなたが必要とするすべてのエラーメッセージを投稿してください。

値は...独自の定義の一部として評価されます。

再帰関数の代わりに再帰値(存在しない)を宣言しているため、コードがコンパイルされません。

この機能させるためには、あなたが今タイプunit -> unitの関数である

let rec HelloEternalWorld() = 
    Console.ReadLine() |> printfn "%s" 
    HelloEternalWorld() 

のようなものを記述する必要があります。

関連する問題