parse: Modify error checking in 'parse' ('[':rest)'
parse: Reworked error checking using do notation
parse: Removed all but one use of guard by using pattern matching in the do notation