2016-10-27 6 views
3

は、私は、リストの作り方を知っている:私が働いているF#:[0; 1; 2; 3; 4; 5]および[0,1,2,3,4,5]

let f n = 
    let out_listA = [ 0 .. (n - 1) ] 
    let out_list = 
     out_listA |> List.reduce (fun state item -> state + ", " + item) 
    out_list 

をオンラインの関与n = 5場合は、次のようなものを印刷することを行使する。代わりに、ウェブ上で見ているから、

[0; 1; 2; 3; 4; 5] 

[0, 1, 2, 3, 4, 5] 

は、カンマで区切られた出力は、文字列に変換リストのように見えます。

したがって、セミコロンで区切られたリストからコンマで区切られたリストに変換するとき、[0, 1, 2, 3, 4, 5]は何を表しているのですか?

エピローグ:

フョードルSoikinさんのコメントは正しかったです。私は混乱していた。

コンマで区切られたリストは、セミコロンで区切られたリストをコンマで区切られたリストとして配列の括弧内に表示するための工夫でした。

次のソリューションは、githubの上ehotingerから来た:

open System 

[<EntryPoint>] 

let main argv = 
    let s = Console.ReadLine() |> int 
    seq { for i in 1..s do yield i } 
    |> Seq.fold (fun s i -> 
     if s = "" then sprintf "%i" i 
     else sprintf "%s, %i" s i) "" 
    |> (fun s -> sprintf "[%s]" s) 
    |> Console.WriteLine 

0 // return an integer exit code 

私はリストが変換されたと思いました。まあ、大括弧で囲まれた文字列と角括弧で区切られた数字のリストに変換されていました。

+0

あなた自身の質問に答えただけではありませんか?*私の質問は、[0,1,2,3,4,5]が何を表しているかです。* **ウェブ上を見ると、コンマ区切りの出力は文字列に変換されたリストのようです** – Sehnsucht

+0

@ Sehnsuchtそれはリストを文字列に変換していないことを除いて。私は説明しようとしていたが、ロブは私を打ち負かすので、彼の答えは以下の通りです – Kittoes0124

+0

@ Kittoes0124彼の答えに私のコメントを参照してください – Sehnsucht

答えて

6

F#では、コンマはタプルの区切り文字です。

ですから、このようなものを参照する場合:タプル(0, 1, 2, 3, 4, 5):だから実際には、あなたの配列[0, 1, 2, 3, 4, 5]が一つだけの要素が含まれてい

match (x, y) with 
| (1.1, 2.2) -> doSomething() 
| (2.2, 3.3) -> doSomethingElse() 
| _ -> defaultAction() 

の省略形です

match x, y with 
| 1.1, 2.2 -> doSomething() 
| 2.2, 3.3 -> doSomethingElse() 
| _ -> defaultAction() 

を。これを確認するには、あなたのREPLでこの簡単なテストをやってみてください。実際には

let test = ([0, 1, 2, 3, 4, 5] = [(0, 1, 2, 3, 4, 5)]) 

補遺

、F#インタラクティブウィンドウには、同様の質問に答えるために非常に良いツールです。同様に上記のテストのように、あなたは、単に次の行をハイライト表示してEnter + Ctrlキーを打つことができます。

let value1 = [0; 1; 2; 3; 4; 5] 
let value2 = [0, 1, 2, 3, 4, 5] 

出力は非常に簡潔に質問に答える

val value1 : int list = [0; 1; 2; 3; 4; 5] 
val value2 : (int * int * int * int * int * int) list = [(0, 1, 2, 3, 4, 5)] 

です。 F#の性質に忠実で、それは私の長年の解答を2行に再現します。

+0

ここではタプルは存在しないことを除いて、そうではありません。フォルダの関数が毎回同じ型を返さなければならないため、何らかの形でリストを倍長にする必要があります。 – Sehnsucht

+0

[0 、1、2、3、4、5]。[0] F#インタラクティブで。 –

+0

@Sehnsucht、Robは正しくOPの質問に答えました。「私の質問は[0,1,2,3,4,5]が何であるか」です。 OPはちょっと混乱していますが、これは少なくとも始めるには十分な答えだと思います。 –

関連する問題