Куча говна / Говнокод #19107 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
breakPar :: (Token -> Bool) -> [Token] -> Either String ([Token], [Token])
breakPar _ []           = Right ([], [])
breakPar p xs@(x:xs')
           | x == TLPar = let t = takePar xs'
                          in case t of
                            Left err -> t
                            Right r -> let tt = breakPar p b
                                           (a,b) = r
                                       in case tt of
                                            Left err -> t
                                            Right rr -> let (y, z) = rr
                                                        in Right ([x] ++ a ++ y, z)
           | p x        = Right ([],xs)
           | otherwise  = checkEither (breakPar p xs') (first ((:) x))

Запостил: Abbath Abbath, (Updated )

Комментарии (6) RSS

  • это по-моему просто велосипед, а не говно
    Ответить
    • По моему нужно писать много маленьких функций, а не одну монструозную
      Ответить
    • let t = takePar xs'
                                in case t of
                                  Left err -> t
                                  Right r -> let tt = breakPar p b
                                                 (a,b) = r
                                             in case tt of
                                                  Left err -> t
                                                  Right rr -> let (y, z) = rr
                                                              in Right ([x] ++ a ++ y, z)


      Можно заменить на

      do
                  (a,b) <- takePar xs'
                  (y,z) <- breakPar p b
                  return ([x] ++ a ++ y, z)
      Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8