My presentation at RubyKaigi 2017.
RubyKaigi 2017で話す内容です。 当日使ったスライドを公開します。 Type Checking Ruby Programs with Annotations // Speaker Deck 多すぎて飛ばした分も入っています。全体の内容としては、この記事を読めばほとんどそれで良いんじゃないかと思います。 さて、まずは「Rubyプログラムを型検査する」とはどういうことなのかを考えましょう。ご存じの通り、Rubyというのはすでに型安全な言語です。この場合に、型検査をしてなにをしたいのかは、いまいち自明ではありません。 型安全性とは「型検査をパスしたプログラムを実行しても、未定義の状態にならない」という性質です。Rubyのような型なしの言語を考える場合には「常に成功する型検査をする」と考えます。Rubyは、Cなどと違って、実行中に未定義の状態になることはありません。配列の範囲外にアクセ
ちょっとわかりにくかった http://en.wikipedia.org/wiki/Dependent_type このというのは、 function make_size_n_vector(n) { return new Array(n); }のような関数の型を表すもの。 単に「型Nの引数を受け取って、『要素型RのVec』を返す関数」じゃなく、「型Nの引数nを受け取って、『そのn個の要素型RのVec』を返す関数」という型が表現できるようにするものをdependent type(拡張した型システム)という感じ。型そのものはΠ型とかともいうらしい。 Curry–Howard(対応/同型)では、プログラム(コード)=証明(手順)であり、型=命題である。普通の型システムの型チェックは命題論理の証明チェックと同等ということになるのかな。その型システムで使う論理を一階述語論理と同じ表現ができるよう拡張し
ダック・タイピング(英: duck typing)とは、Smalltalk、Perl、PHP、Python、Ruby、JavaScriptなどの動的型付けに対応したオブジェクト指向プログラミング言語に特徴的な、型付けのスタイル(作法)のひとつである。ダック・タイピングはポリモーフィズム(多態性)を実現する手段のひとつとして使われる[1]。 Pythonのリファレンスでは、ダック・タイピングは「あるオブジェクトが正しいインタフェースを持っているかどうかを決定するために、オブジェクトの型を見ることはしないプログラミングスタイルである」と説明されている。代わりに、オブジェクトが持つメソッドや属性(フィールドまたはプロパティ)が単純に呼ばれたり使われたりする。特定の型よりもインタフェースを重視することで、うまく設計されたコードは、ポリモーフィックな代入の許可による柔軟性を向上する[2]。 静的型付
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く