タグ

ブックマーク / igeta.cocolog-nifty.com (2)

  • [C#] タプルの構造的等値および比較: いげ太のブログ

    [Last-Updated 2009/11/24: 間違いを訂正し、全体的に文章の修正を行いました。] .NET 4 から、BCL にタプルが入りました。 組を構築する(Building Tuple) 結局、タプルは参照型として実装されましたが、それはほとんど値型として振る舞うべきものであるようにも見えます。タプルはただ複数の値をまとめるためにあり、興味があるのはそのまとめられた値の方です。となれば、なにか 2 つのタプルを比較するときには、タプルのインスタンスの参照比較ではなくタプルの中身の値によって比較を行いたい、という場合がほとんどではないでしょうか。 「Equals および等値演算子 (==) 実装のガイドライン」によれば、参照型においては、Point、String、BigNumber などの基型を除き、等値演算子 (==) をオーバーロードしない方針がとられるようです。タプルは

    grafi
    grafi 2013/12/26
  • Structural Subtyping とは: いげ太のブログ

    subtyping (部分型)の話。僕が知る限りのごく狭い範囲では、メインストリームの静的型付け言語では nominal subtyping によって、動的型付け言語では duck typing によって、それは成されるようだ。それらには一長一短がある。間を取りたくなったら structural subtyping の出番だ。静的型付けの堅さを維持しながら、それでいて動的型付け言語の柔軟性にも触手を伸ばす。structural subtyping は、ハイブリッドな subtyping なのだ。 ちなみに先に告白しておくけど、エントリでは OCaml、C++Scala を題材とするが、僕は、いずれの言語をも使ったことがなく、一行たりともコードを書いたことはない。そんな人間が Web で拾った情報だけを頼りに書いている不甲斐ない文章だということを割り引いた上で、この先を読み進めていただけ

  • 1