Я пытаюсь представить двумерный массив в виде последовательности последовательностей на объекте (чтобы иметь возможность конкретно выполнять Seq.fold (fun x -> Seq.fold (fun ->..) [] x) []
mytype)
Ниже представлена игрушечная программа, которая предоставляет идентичные функциональные возможности.
Из того, что я понимаю, здесь многое происходит, во-первых, IEnumerable
имеет неоднозначную перегрузку и требует аннотации типа для явной изоляции, о которой IEnumerable
вы говорите.
Но тогда могут возникнуть проблемы с модулем, требующим дополнительной помощи:
type blah =
class
interface int seq seq with
member self.GetEnumerator () : System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable<(int*int)>> =
seq{ for i = 0 to 10 do
yield seq { for j=0 to 10 do
yield (i,j)} }
end
Есть ли какой-нибудь способ заставить приведенный выше код работать так, как задумано (верните seq<seq<int>>
), или я упустил что-то фундаментальное?