matchExec e ((APattern p c):ps) v = do m <- pMatch e p v
                                       if m
                                          then return c
                                          else matchExec e ps v
matchExec e ((APattern p c):ps) v = do m <- pMatch e p v
                                       if m
                                          then return c
                                          else matchExec e ps v
matchExec e ((APattern p c):ps) v = do m <- pMatch e p v
                                       if m
                                          then return c
                                          else matchExec e ps v