accumulateという操作を実装してください。この操作は、コレクションと、その各要素に対して行う操作を受け取り、入力コレクションの各要素にその操作を適用した結果を収めた新しいコレクションを返します。
次の数値のコレクションがあるとします。
そして、操作は次のとおりです。
x => x * x)書いたコードで、2乗した値のコレクションを生成できるようにしてください。
期待される関数シグネチャは、テストスイートで確認してください。
標準ライブラリが提供するcollect、map、fmap、その他もろもろの機能には手を出さないでください! 代わりに、ほかの基本的な道具を使って、自分で解いてみてください。
より正確に言うと、組み込みのLINQメソッドは一切使えません。
accumulateはIEnumerableを返すため、その実行は、それに対してToList()が呼び出されるまで延期されます。これはAccumulate_is_lazyメソッドでテストされます。
この演習では、拡張メソッドを書く必要があります。詳しくは、こちらのページを参照してください。