前回投稿したHaskellプログラムをF#に置き換えてみました
前回の投稿記事はこれです。
Haskellでリストを使って、コンビネーション(C)の計算プログラムを作って遊ぶ
このHaskellのプログラムを、F#に置き換えてみました。
Program.fs
let c (m,n) = let denom = if m <= 0 || n <= 0 || m < n then [1;1]
else match m with
|1 -> [1;1]
|x -> [x-n+1..x]
let nume = if n <= 0 || m < n then [1;1]
else match n with
|1 -> [1;1]
|x -> [1..x]
(List.reduce (*) denom) / (List.reduce (*) nume)
[<EntryPoint>]
let main argv =
let conbi = [(10,9);(9,9);(8,3);(7,-2);(1,3)]
for n in conbi do
printfn "%d" (c n)
0
実行結果は
10
1
56
1
1
Haskellでは、リストは
[0,1,2,3,4,5]
と、カンマで区切りますが
F#では
[0;1;2;3;4;5]
と、セミコロンで区切ります。
あと、Haskellのprint
は、リストをそのまま表示してくれますが、F#は、できませんでした。(方法はあるかどうか分かりません)
なのでfor
文でそれぞれの要素を1つ1つ表示させています。