Guard 節などで使う Type Test BIF の 'is_' Prefix は省略しちゃ駄目!
今まで、Supervisor を終了させる為に、何の気無しに下記のようなコードを書いていました。
stop() -> case whereis(?MODULE) of Pid when pid(Pid) -> exit(Pid, normal), ok; _ -> not_started end.
kai-devel-ja で、pid/1 って何?という質問があり、erlang:is_pid/1 と等価ですと答えたのですが・・・Erlang Reference Manual の 6.24 Guard Sequences に下記の表記がありました。
Note that each type test BIF has an older equivalent, without the is_ prefix. These old BIFs are retained for backwards compatibility only and should not be used in new code.
後方互換性の為に存在してるので、新しく作るコードでは使うなって事らしいですね。
今度から気をつけようっと。