Immediately, the cause of your problem is that
| otherwise = (False, maze)
maze , . snd noWay . ( , ! .)
: , , maze . , . . (, → → → ), south , east , -
south = path (snd east) x (y+1)
, noWay. ( , .) , north , , ,
| otherwise = (False, changeVal (snd north) x y '!')