1. Haskell / Говнокод #21818

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    sign' ← case sign of
                '-' → return '-'
                '+' → return ' '
                _   → Nothing
      hh ← (readMaybe [sign',h1,h2]) :: Maybe Integer
      mm ← (readMaybe mm) :: Maybe Integer

    Парсим значение со знаком.

    Запостил: CHayT, 11 Декабря 2016

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

    • seo пост
      Ответить
    • :t readMaybe
      Ответить
    • А зачем форсить наличие знака?
      Ответить
      • Такой формат. Говно в том, как обрабатывается знак плюс.
        Ответить
        • Надо так?
          sign' <- case sign of
            '-' -> return (-1)
            '+' -> return 1
            _ -> Nothing
          hh <- (readMaybe [h1, h2]) :: Maybe Integer
          -- multiply by sign later
          > hh
          > mm

          Время чтоли парсится?
          Ответить
        • > Такой формат.
          Поди все три варианта надо обрабатывать (+03:00/-03:00 - относительно чего-нибудь, 03:00 - абсолютное)?
          Ответить
    • Настоящее говно в том, как ошибки обрабатываются ;)
      Ответить
      • Что плохого в Maybe?
        Ответить
        • Удачного дебага, когда парсер вернёт Nothing вместе внятного описания, что пошло не так и где.
          Ответить
          • Для разбора того, почему не распарсилось что-то очень простое, достаточно логов только снаружи (printf "Tried to parse %s but got Nothing") и крупицы логики (или исходного кода). Так что не соглашусь, что это всегда плохо.
            Ответить
            • Если комбинатор используется в одном месте сам по себе -- может и сойдёт. Если его когда-нибудь планируется комбинировать с чем-нибудь (кобенатор же), то уже как-то не очень.
              Ответить
              • Использовал комбинатор тебе на одном месте, проверь.
                Ответить
                • Завернул тебя в замыкание, проверь.
                  Ответить
                  • Завернул вас обоих в продолжение, проверьте.
                    Ответить
                    • Вернул нас троих в монаду, проверь.
                      Ответить
                      • Залифтил монаду в GirlT и вызвал unsafePerformIO, проверь.
                        Ответить
                        • Поверь в мечту, поверь в мечту, поверь в мечту, поверь.
                          Ответить
                          • Счастлив видеть Вас на нашем сайте, Юрий Михайлович! :)
                            Когда-то будучи Вашим фанатом, не могу не въебать вам плюс.
                            Ответить
                          • Поверил в мечту, проверь
                            Ответить

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