+ parseFor = do
+ lift $ do
+ string "for"
+ skipSpaces
+ identifier <- lift (munch1 isAlpha)
+ lift $ skipSpaces >> char '=' >> skipSpaces
+ start <- step readPrec
+ lift $ skipSpaces >> char ',' >> skipSpaces
+ cond <- step readPrec
+ step' <- (do
+ lift $ skipSpaces >> char ',' >> skipSpaces
+ Just <$> step readPrec) <++ pure Nothing
+ lift $ skipSpaces >> string "in" >> skipSpaces
+ body <- step readPrec
+ return (For identifier start cond step' body)