partitionedはstd::partitionのlazy版です。 一瞬「すげー」と思ったんですが,よく読んでみたら,単に source sequence を二回列挙してるだけっぽくて残念*1.というかまあ二回列挙していいなら全然難しくありませんよね.C# で書いたとしたらこんな感じでしょーか. static class Make { public static Tuple<IEnumerable<T>, IEnumerable<T>> Partition<T>( this IEnumerable<T> source, Func<T, bool> pred) { return new Tuple<IEnumerable<T>, IEnumerable<T>>( source.Where(pred), source.Where(x => !pred(x))); } } 『2007/4/2