2016-07-12 8 views
1

最初の日はF#で働いています。私はハスケルで時間を費やして、いくつかの既存の.netコードで動作するようにF#を学ぼうとしています。なぜこのコードは私に怒っていますか?これと同等のものは何ですか?メインにどのようにタイプ注釈を追加するのですか?このf#式に型エラーがあるのはなぜですか?

type Color = Red | Green 
[<EntryPoint>] 
let main = 
    let a = Red 
    if a = Red then 
     printfn "hi!" 
    else 
     printfn "no!" 
+3

このような単純なアプリケーションでは、必ずしも 'main'を使用する必要はありません。https://dotnetfiddle.net/DAuzG8 –

+0

@FoggyFinder - 良い点ですが、VSでスクリプトを使用してFSIを使いこなすのが最善です/ VSCode/Ionide /等 – DaveShaw

答えて

6

[<EntryPoint>]属性(例えばmain)を持つ関数のシグネチャは、それがstring[]パラメータと型int

の戻り値が欠落しているバージョンでstring[] -> intする必要がありますあなたはそれらを追加することによって、それを解決することができます中:

type Color = Red | Green 
[<EntryPoint>] 
let main argv = //argv added here is inferred to be string[] 
    let a = Red 
    if a = Red then 
     printfn "hi!" 
    else 
     printfn "no!" 
    0 //Return 0, all OK 

0なしの終わりにintを返すには、0123を戻ってきています(printfnの結果)。

+0

ああ。私はインタラクティブにそれを実行しようとしている、と私は例を使用する必要があります["" 1 "; "2"; "3" |]。パイプはここで何をするのですか? – Carbon

+0

これは厳格なリストを作成しますか? – Carbon

+0

FSIで試してください:)。 'let a = [| "a"; | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ] '。 – DaveShaw

関連する問題