pMatch e (PHeadTail h t) (AList (x:xs)) = do head <- pMatch e h x
                                             if head
                                                then pMatch e t (AList xs)
                                                else return False
pMatch e (PHeadTail h t) (AList (x:xs)) = do head <- pMatch e h x
                                             if head
                                                then pMatch e t (AList xs)
                                                else return False
pMatch e (PHeadTail h t) (AList (x:xs)) = do head <- pMatch e h x
                                             if head
                                                then pMatch e t (AList xs)
                                                else return False