3

F# にtrueto1falsetoを変換する組み込みの方法はあり0ますか? これは、C、C++ などの言語では簡単です。

ちょっとした背景として、私は教科書の演習 ( F# を使用した関数型プログラミングの演習 2.4 )を解決しようとしていoccFromIth(str,i,ch)ます。chjstrj >= i

私の解決策は

let rec occFromIth (str : string, i, ch) =
    if i >= str.Length then 0
    else if i < 0 || str.[i] <> ch then occFromIth(str, i+1, ch)
    else 1 + occFromIth(str, i+1, ch)

しかし、私はコードの重複が好きではないので、私は書きました

let boolToInt = function
    | true -> 1
    | false -> 0

let rec occFromIth (str : string, i, ch) =
    if i >= str.Length then 0
    else boolToInt (not (i < 0 || str.[i] <> ch)) + occFromIth(str, i+1, ch)

if... then... else...別の方法は、C/C++条件演算子のスタイルで ,を使用することだと思います

let rec occFromIth (str : string, i, ch) =
    if i >= str.Length then 0
    else (if (not (i < 0 || str.[i] <> ch)) then 1 else 0) + occFromIth(str, i+1, ch)

また

let rec occFromIth (str : string, i, ch) =
    if i >= str.Length then 0
    else (if (i < 0 || str.[i] <> ch) then 0 else 1) + occFromIth(str, i+1, ch)

F# でこれを行う方法は何ですか?

4

3 に答える 3