polymorphism
https://gyazo.com/fd519998513a950a958b5c669f5ed34f
静的な多相
動的な多相
アドホック多相と、パラメトリック多相の差異
程度問題なので真面目に考えるべきではないが、その程度を圏論的に見よう、というもの
アドホック多相は単一のシニフィアン、パラメトリック多相は単一のシニフィエ
みたいなことを思ったmrsekut.icon
dispatchは「呼び出し」ぐらいの意味
メッセージの「配送」とか
ポリモーフィズムのない単純な型システムの場合に起きる問題点
code:ml
let id = fun x -> x in if id true then 1 else id 2
このidは、引数をそのまま返す関数
単純型システムの場合、上のコードではidに型を付けられない
本当は安全に実行できるプログラムのはずなのに、型エラーを起こす
これを防ぐための一つの方法はidIntやidBoolを定義し、以下のように書き換えるなど
code:ml
let id = fun x -> x in if idBool true then 1 else idInt 2
しかしこの場合、idの実装を変えたくなったときに、全ての型の実装を修正する必要が出てくる
参考