Size: a a a

2020 December 04

JS

Jerzy Syrowiecki in Haskell Start
Aragaer
ну да, примерно так, просто я многих этих штук не знаю, а парсек позавчера использовал
молоток не знаю, а фрезерный станок вчера использовал
источник

A

Aragaer in Haskell Start
примерно так
источник

A

Aragaer in Haskell Start
что впрочем мне не мешает теперь, когда ответ есть, уже переписать через words и прочие readMaybe
источник

AP

Aleksei (astynax) Pi... in Haskell Start
rules =
 [ ...
 , ("eyr", intInRange 2020 2030)
 , ("hgt", validHeight)
 , ...
 ]

intInRange :: Int -> Int -> Validator
intInRange f t s = case readMaybe s of
 Just x -> f <= x && x <= t
 _      -> False

validHeight :: Validator
validHeight s = validCm || validIn
 where
   validCm = suffix == "cm" && intInRange 150 193 prefix
   validIn = suffix == "in" && intInRange 59 76 prefix
   (prefix, suffix) = splitAt (length s - 2) s

validEyeColor :: Validator
validEyeColor =
 (`elem` ["amb", "blu", "brn", "gry", "grn", "hzl", "oth"])
фреймворк валидации :)
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Мне, например, нравится такие задачки решать прелюдными средствами — большой простор для творчества
источник

A

Aragaer in Haskell Start
а у меня кроме парсека больше ничего и нету. А, еще catMaybe и rights
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Ну так у меня вообще только base
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Задачку с паролями я тоже с парсером сделал (мегапарсек), но тут-то специально всё упрощено, чтобы можно было ручками символы поотрывать и пожонглировать
источник

TZ

Timofey Zakrevskiy in Haskell Start
Aleksei (astynax) Pirogov
Мне, например, нравится такие задачки решать прелюдными средствами — большой простор для творчества
У каждого свои цели. Кто-то наоборот, пользуется этим адвентом, чтобы подучить либы
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Подучивать либы стоит, подучив сперва base, ящитаю
источник

TZ

Timofey Zakrevskiy in Haskell Start
Пароли я сделал без мегапарсека, если что)
источник

A

Aragaer in Haskell Start
мегапарсек и парсек это разные вещи?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Parsec считается устаревшим, Megaparsec его заменяет почти один-в-один в плане кода, но более быстр и универсален
источник

TZ

Timofey Zakrevskiy in Haskell Start
Да. Первый когда-то форкнулся от второго и с тех был переписан едва ли не полностью
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Ещё Megaparsec умеет собирать ошибки в более удобный для дальнейшей обработки формат.
источник

TZ

Timofey Zakrevskiy in Haskell Start
А, во, раз мы о лирике - комбинатор sepEndBy - какие есть сценарии его использования вне парсинга? Я (до кофе) что-то пока не придумал ничего
источник

A

Aragaer in Haskell Start
а, но parsec сразу включен, а мегапарсек надо отдельно докидывать?
источник

TZ

Timofey Zakrevskiy in Haskell Start
Aragaer
а, но parsec сразу включен, а мегапарсек надо отдельно докидывать?
Да, мегапарсек надо подключать
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Parsec включён не в любую поставку, например. Если у вас проект, а не скрипт, то parsec всё равно нужно будет подключать, как зависимость
источник

A

Aragaer in Haskell Start
ну вот именно что у меня просто разовые отдельные скрипты, не проект
источник