次のコードがあります
[Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod]
public void TestEnumOfMaybe()
{
List<Maybe<int>> l = new List<Maybe<int>>();
l.Add(1.ToMaybe());
l.Add(Maybe.None<int>());
l.Add(3.ToMaybe());
var y = from x in l
from y in x
select y;
}
私の Maybe 型は、すべての Select および SelectMany メソッドを受け入れて Linq と互換性があり、それを証明するテストがあります。ただし、上記のテスト ケースのように、クロス タイプの LINQ コンポジションを行う方法がわかりません。私が得るエラーは
expression of type 'FunctionalExtensions.Maybe<int>' is not allowed in
a subsequent from clause in a query expression with source type
'System.Collections.Generic.List<FunctionalExtensions.Maybe<int>>'.
Type inference failed in the call to 'SelectMany'.
FunctionalExtensions*
2 つの LINQ 型を組み合わせる方法はありますか、それとも運が悪いのでしょうか? 完全な Maybe.cs の実装は次の場所にあります。