registerP, wP, xP, yP, zP :: Parser Register
registerP = choice [wP, xP, yP, zP]
-wP = "w" *> pure W
-xP = "x" *> pure X
-yP = "y" *> pure Y
-zP = "z" *> pure Z
+wP = W <$ "w"
+xP = X <$ "x"
+yP = Y <$ "y"
+zP = Z <$ "z"
argumentP :: Parser Argument
argumentP = (Reg <$> registerP) <|> (Lit <$> signed decimal)