Patternの可搬性
Elixirのパターンはコンパイル時に評価されるので、ランタイムまで保持される「patternのリスト」のようなものは残念ながら書けない(はず)。
code:iex
Interactive Elixir (1.5.2) - press Ctrl+C to exit (type h() ENTER for help)
** (CompileError) iex:1: unbound variable _
(stdlib) lists.erl:1354: :lists.mapfoldl/3
(stdlib) lists.erl:1355: :lists.mapfoldl/3
(elixir) expanding macro: Kernel.|>/2
true
match?/2はmacroで、コンパイル時に第1引数をpattern match演算子(すなわち=)の左辺に展開するので上記の例だと2パターン目は成立する が、1パターン目は=やcase文の->の左辺、あるいは関数headerの引数部分などのpattern表現が許されている部分以外にpattern用の記法が使われているのでエラーになる。