タグ

structural-subtypingに関するnsyeeのブックマーク (2)

  • F#で構造的部分型のマネゴト - Qiita

    F#のジェネリクスに制約をつけて、型パラメータに使える型を制限することができます。 それを使って、構造的部分型(structural subtyping)みたいな動きをさせてみようと思います。 // target : exec メソッドを持つオブジェクト // num : exec メソッドに渡す値 let inline exec< ^T when ^T : (member exec : int -> string)> target num = (^T : (member exec : int -> string) (target, num)) // exec メソッドを持つインターフェイス type IExec = abstract exec : int -> string // IExec インターフェイスを実装するクラス type Hoge() = interface IExec w

    F#で構造的部分型のマネゴト - Qiita
  • (皿うどん)Structural Subtyping(構造的部分型)アレコレ - ( ꒪⌓꒪) ゆるよろ日記

    このまえ、夢の中でね、あるコレクションの中から特定のシグニチャを持つオブジェクトをより分けるようなコード書いてる夢見たんですよ。ええ、見たんです夢で。 で、ふと目が覚めて(深夜3時半)おもむろにREPLでいろいろやってみた結果を書こうと思います。ええ、書いてみます。 Structural Subtyping(構造的部分型)って何ぞ? 例から入ります。あるメソッドのシグニチャ(名前、引数の例えば{def mkString (start:String, sep:String, end:String):String}というシグニチャを持つ型Aを定義すると、上記のシグニチャを持つ型Bや型CはAの派生型と見なされるわけです。 このように、2つの型がもつメソッドなどの構造によって派生関係が決まるのがStructural Subtyping(構造的部分型)というものです。対して、通常のextendsなど

    (皿うどん)Structural Subtyping(構造的部分型)アレコレ - ( ꒪⌓꒪) ゆるよろ日記
  • 1