ContainerのC++のSTLのalgorithm系メソッドについて

  • func(begin, end, ...)は、func(self.begin, self.end, ...)となる
  • 破壊的なものは!が後置、それの付かない版はコピーを返す
  • ArrayやMapの値は置き換え(self.[index] = value)でなく書き換え(self.[index].= value)になる
  • for_eachはeachがあるので無し。eachはcontinue, breakをサポートする
  • transformはmapがあるので無し。mapはcontinue, breakをサポートする
  • removeは勝手にeraseする
  • copyはObject.copyと名前が衝突するのでcopy_intoになってる
  • C++で_ifが後置するものがある関数は常に_ifの方を呼ぶ

Giraffe+ 0.6.22.1208 から、Object.invokeに引数を渡した場合に==を呼ぶようになり、これにより、普通のオブジェクトを高階関数にpredicateとして渡せるようになりました。
例えばString.trimでは、

'1234321'.trim(\1) //23432

とできるようになりました。

これに伴い、C++STLの関数は全て_ifの方を使えばいいということで、そうしたんですが、x == yとなってたのが、y == xとなり、問題のある場面があります。
例えばfindでは、

s:: '2'
s.as_Int: s.to_Int$ //Int.== が自動的に呼ぶ
{1 2 3}.find(s) //以前なら1.== sだが、今はs.== 1なのでエラー。
{1 2 3}.find(`n[n.== s]) //以前と同じ

ということになります。こういう特殊なことをしてない限りは問題無いはずです。