ここを読んだ
http://stackoverflow.com/questions/4156727/what-is-the-difference-between-pattern-matching-and-guards
http://learnyouahaskell.com/syntax-in-functions
http://stackoverflow.com/questions/30589187/elixir-pattern-match-or-guard
https://github.com/clojure/core.match/wiki/Overview

ガードはif-elseの糖衣構文的なもの
パターンマッチングはデータを分解して変数に束縛するためのもの
どっちも似たような用途に使えるけどガードは任意の真偽式を扱える分強力