mapConserve

trait List[A] {
  def mapConserve[B >: A](f: (A) => B): List[B]
}

mapConserve は、関数 f をこの List の各要素に適用し、もし変換されたすべての要素が元の要素と等しい(eq で)場合、元のリストをそのまま返します。

もしひとつでも変換された要素がソース要素と等しくない(eq で)場合、この関数は変換結果から作られた新しい List を作成します。