値を返すから、三項演算子のネストですな。いう程度の理解しかしていません。三項演算子ネストより綺麗に書けて素敵。いう浅すぎる理解しか、今はしていません。y::ysという表記ですが、これは配列中の最初のものがy、それ以外がysになります。LinqだとFirst()とSkip(1)ですね。[3..5]とすれば、xが3でxsが4,5になる。基本はパターンマッチ時用ってことなのかしらん。この辺はちょっと良く分かりません。C#のほうの、IEnumerableのままSkipをゴロゴロと繋げていくのは実行効率がアレな悪寒。いってToArrayを毎回使うのもなあ、というわけで上手い落し所が見つからない。QuickSortのように一本の配列に対し、境界の数字を渡していくってのやるとゴチャゴチャするし。あ、でもF#のも結局ysってのはxsとは別の、新しい配列ですよね?C#で表すのならば、xs.Skip(1).ToArray()ということかしらん。したら、この程度の「効率」なんて奴は、気にしたら負けだと思っている。よくないかもしれない。lookupTable[1];```</p>配列とlistとの違い。listは不変(immutable)で、配列は可変(mutable)ということかしらん。Frameworkのメソッド・プロパティが全部使える。mutableなものへの値の再代入は=ではなく&lt;-で行う。あとは、Array.createは中身がnullな配列ではなく、初期値を指定して全部それで埋めるメソッドのようです。notationはいいですね。C#だとArray.Copyを使うのが等しいでしょうけど、記述が冗長すぎてねえ......。実行時間に対して差は出ないでしょ、と思う場合はLinqでSkip->Takeにしたほうがすっきり書けて良い。あ、あとインデクサは.[]が対応してるようです。