代替要素を使用して、F#リストを2つに分割しようとしています。これが私の試みです:
let split l =
let rec loop l isEven result1 result2 =
match l with
| [] -> result1 result2
| [head::tail] when isEven -> loop tail (not isEven) head::result1 result2
| [head::tail] -> loop tail (not isEven) result1 head::result2
loop l false [] []
それは私にエラーを与えます:
Program.fs(5,39): error FS0001: Type mismatch. Expecting a
'a
but given a
'b -> 'a list
The resulting type would be infinite when unifying ''a' and ''b -> 'a list'
それがどのように無限になり得るのかわかりません。また、なぜそれが「b」から「リスト」までの関数を与えていると考えるのかわかりません。誰かが私がどこで間違っているのか教えてもらえますか?