パターンマッチが分かりにくいんで、整理してfor式使うとかした方が良いのでは？