私はF#が初めてです。数値を対応するローマ数字に変換する F# プログラムを作成しようとしています。
type RomanDigit = I | IV | V | IX
let rec romanNumeral number =
let values = [ 9; 5; 4; 1 ]
let toRomanDigit x =
match x with
| 9 -> IX
| 5 -> V
| 4 -> IV
| 1 -> I
let capture x =
values
|> Seq.find ( fun x -> number >= x )
match number with
| 0 -> []
| int -> Seq.toList ( Seq.concat [ [ toRomanDigit capture ]; romanNumeral ( number - capture ) ] )
ここでの問題は、キャプチャの型が 'a -> int であることですが、Seq.find が int を返すことを考えると、型が int になると予想しています。特に、キャプチャへの後続の呼び出しは、特に次の場合にエラーをスローします。
| int -> Seq.toList ( Seq.concat [ [ toRomanDigit capture ]; romanNumeral ( number - capture ) ] )
私は何を間違っていますか?