質問: Rubyだと実行したオブジェクト自身を変更するような破壊的メソッドは 大体メソッド名の末尾に!がついてますよね。 例 ``` # 文字を正規表現で置換する s.gsub(/(\r\n|\r|\n)/, "") s.gsub!(/(\r\n|\r|\n)/, "") ``` これって直感的だし短く書けて非常にわかりやすいと思うんですが、 他の言語だと大抵仕様上メソッドに!という文字は使えません。 そこで皆様に質問なのですが、Ruby以外の言語で例えば処理内容は同じだけど 「引数として返す」、「オブジェクト自身を変更する」 という違いの2つのメソッドを実装したい場合、 何か良い感じの命名規則とか自分ルールとかあったら教えて下さい。
回答: Haskellだとそういった破壊的な関数はunsafeをつけるようです。 え、純粋関数型言語であるHaskellに破壊的なものなんてないだろうって? そ、そこは速度を無理矢理上げるための大人の事情って事で必要みたいなんです。遅延評価と最適化によっていつ評価されるのかわからないドキドキもんらしいですけどね。