Tokyo.R #77のLTでRの型検査を実装した話をしてきました。
https://igjit.github.io/slides/2019/04/typrr/#/
プログラミング言語の基礎概念という本に出てくる型推論のアルゴリズムをRで実装して遊んでみた、という内容です。
実装はこちら: https://github.com/igjit/typrr
Emacsで動かす
当日の型検査のデモはEmacsで行いました。(RStudioで動くようにしようと思ったけど間に合わなかった)
EmacsにESSとFlycheckがインストールされていれば、これをロードすれば動くはずです。
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にエラーの箇所が表示されます。
スライドにあるように対応している構文が少なすぎるので実用性は無いですが、型推論の面白さの一端に触れてもらえると嬉しいです。