1. Куча / Говнокод #19107

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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, 30 Ноября 2015

    Комментарии (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)
        Ответить
        • точно
          мне что-то показалось, что они не просто Left возвращают в случае ошибки
          Ответить
    • takePar будет?
      Ответить

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