У меня есть два фрагмента кода, который пытается преобразовать список с плавающей точкой в список Vector3 или Vector2. Идея состоит в том, чтобы взять 2/3 элемента за раз из списка и объединить их как вектор. Конечным результатом является последовательность векторов.
let rec vec3Seq floatList =
seq {
match floatList with
| x::y::z::tail -> yield Vector3(x,y,z)
yield! vec3Seq tail
| [] -> ()
| _ -> failwith "float array not multiple of 3?"
}
let rec vec2Seq floatList =
seq {
match floatList with
| x::y::tail -> yield Vector2(x,y)
yield! vec2Seq tail
| [] -> ()
| _ -> failwith "float array not multiple of 2?"
}
Код выглядит очень похожим, но, похоже, нет возможности извлечь общую часть. Любые идеи?