Alex
А как он может зафейлить? Достичь конца файла?
он фейлит когда там ньюлайн или конец
Alex
возможно, а как нужно это должно выглядеть?
Ilya
сдается мне, ты хочешь optional
которого я в megaparsec почему-то не нахожу
Ilya
а, ну да
Alex
У меня есть строка ввида a = b
Alex
но в конце может быть запятая
Alex
Или вот тоже может быть a,
Alex
Или без запятой
Alex
Мне нужно вернуть две строки, одна пустая если отсуствует какое либо значения
Ilya
clexem [= clexem] [,]
Cheese
а, ну это точно optional
Ilya
как-то так?
Alex
Да
Alex
Верно
Ilya
странно, конечно, что запятая, как Гамлет, не может решить, быть или не быть
Alex
Это все сишные енумы
Alex
Там в конце запятая может быть или не быть
Ilya
clexem <*> optional (char '=' *> clexem) <* optional (char ',')
Alex
А как мне модифицировать это так, чтобы моя функция возвращала a и b?
Ilya
ну, если не запятая, там должен быть вайт-спейс? или ньюлайн только? я не помню синтакс енамов
Ilya
мой код, кстати, вообще не тайпчекется
Ilya
ну, в do все заверни
Ilya
do a <- clexem b <- optional (char '=' *> clexem) -- b is Maybe return (a, b) -- or whatever
Ilya
забыл запятую
Alex
А как мне вытащить значение b из maybe?
Alex
То есть если b nothing то поместить вместо него пустую строку?
Alex
Все
Alex
Я нагуглил
Alex
Я запустил
Alex
Почему b всегда nothing
Cheese
Это все сишные енумы
а взять готовый сишный парсер не круто?
Alex
Хочется поиграться с хаскелем
Alex
pos123 :: Parser Position pos123 = do do a <- clexem b <- optional (char '=' *> clexem) case b of Just b -> return ( Position a b) Nothing -> return ( Position a "") -- class
Cheese
в char '=' *> clexem, кажется, не учитывается пробел
Alex
Да
Alex
Так и есть
Alex
Я кажется уже и сам поправлю
Alex
Спасибо большое
Maxim
можно сделать return $ Position a $ fromMaybe "" b
Maxim
и никаких кейсов не надо
Alex
Все
Alex
Все пашет как нужно
Alex
Большое спасибо:)
Alex
А как в кабеле добавить еще один source файл в качестве библиотеки?
Alex
У меня по дефолту есть Lib.hs
Alex
А как еще одну добавить?
Cheese
перечислить имена модулей (не файлов) в exposed-modules
Cheese
или other-modules
Cheese
А как в кабеле добавить еще один source файл в качестве библиотеки?
только это будет не новая библиотека, а новый модуль для той же библиотеки
Alex
Понял, спасибо:)
Timofey
Открытый вопрос - кто-то в проде использует shake?
Cheese
см. project Hadrian
Timofey
Да, уже видел эту новость. Мне бы какие-то примеры, где люди выбрали shake не имея какой-то предшествующей привязки к экосистеме хаскеля
Timofey
Я бегло погуглил, но единственная вменяемая success story - это миграция в Standard Chartered, да и та без каких-то конкретных фактов
Timofey
А хочется - "Была каша из сконса/питона, нужен был фуллтайм синьор это всё поддерживать, компилилось 5 минут, после миграции компилится 30 секунд, поддерживается джуном на полставки" =)
Alexander
спросил в рабочем чятик, если что ответят напишу
Timofey
Спасибо
Dmitry
Я смигрировал как-то питонолапшу на шейк, но потом другой человек перемигрировал на паппет
Dmitry
Так себе история успеха
Ilya
https://github.com/swift-nav/shake-before-make/blob/0a47f66015a1cf4f742f2c938b3d75c1ff070ac9/Shake.pdf
Ilya
прилетело в Haskell Weekly
Ilya
некий старап в СФ использует
Cheese
я пробовал в одном проекте внедрить, но понял, что Шейк не эквивалент Мэйку, и местами выходит сложнее, вернулся на Мэйк
Ilya
шейк для совсем простых вещей выходит сложнее, да
Ilya
с другой стороны, по мере возрастания сложности, шейк должен начинать выигрывать
Ilya
(если что, я сам шейк не использовал, только пейпер читал, но доводилось копаться в ядерных мейкфайлах, многие вещи оттуда на шейке выглядели бы изящнее)
Ilya
Что за shake? Чем лучше GNU/make?
Ilya
совсем другой
Ilya
начиная с того, что это EDSL внутри хаскеля
Cheese
и заканчивая тем, что не подходит ни для чего за пределами сборки
Andrei
эээ. как что-то плохое.
IC
А что ещё есть за пределами сборки в Make?..
Alex
foldl (++) "" str
Alex
А как сделать так, чтобы еще запятые добавляла между элементами?
Ilya
intersperse/intercalate
Ilya
или возьми сразу библиотеку для претти-принтинга (кстати, какую сейчас правильно юзать?), там есть punctuate