Tokyo.R #77 でRの型検査を実装した話をした

Posted on
R

Tokyo.R #77のLTでRの型検査を実装した話をしてきました。

https://igjit.github.io/slides/2019/04/typrr/#/

プログラミング言語の基礎概念という本に出てくる型推論のアルゴリズムをRで実装して遊んでみた、という内容です。

実装はこちら: https://github.com/igjit/typrr

Emacsで動かす

当日の型検査のデモはEmacsで行いました。(RStudioで動くようにしようと思ったけど間に合わなかった)

EmacsにESSFlycheckがインストールされていれば、これをロードすれば動くはずです。

RStudioで動かす

後日RStudioで動くようにしました。(rocker/tidyverse:3.5.3で動作確認)

Consoleで以下を実行してパッケージをインストール

devtools::install_github("igjit/typrr")

Consoleで以下のように型検査したいファイルを指定してlintr実行

lintr::lint("sample.R", list(typrr_linter = typrr::typrr_linter()))

すると型エラーある場合はMarkers paneにエラーの箇所が表示されます。

スライドにあるように対応している構文が少なすぎるので実用性は無いですが、型推論の面白さの一端に触れてもらえると嬉しいです。