Canada という小さな実装のライブラリがあります。 hex.pm Ruby でいうところの CanCanCan のような権限判定のためのライブラリなのですが、とても興味深い実装をしています。 例えば user が article を read できるか判定するとき、 can?(user, read(article)) あるいは user |> can?(read(article)) のような書き方をするのですが、このとき read/1 という関数は定義しません。 定義する必要がありませんというのがより正しいかもしれません。 何をやっているのか、その仕組みをなぞるコードを書いて確認してみまし…