Alexander
и без жутких добавлений вконец списка по одному элементу через ++
Vladimir
да, точно, в конец же медленно, я забыл
Vladimir
Спасибо!
Alexander
а можно https://hackage.haskell.org/package/monad-loops-0.4.3/docs/Control-Monad-Loops.html и whileJust оттуда
Alexander
..никогда почти не пользовался
Alexander
ещё как-то можно через MaybeT и скорее всего Compose но мне не сообразить
Vladimir
ох, трансформеры я пока не освоил, а вот про лупы спасибо, хотя каким-то читерством кажется :D
Alexander
Примерно тоже самое что ты руками написал
Alexander
+-
Vladimir
ну вообще да
Ruslan
Как и где(название сайтов, ссылки и тд) лучше всего учиться программировать клиент-серверную архитектуру, понимание того, как все работает. Предполагается использовать wai как сервер, как фронт -- lucid(сначала с бутстрапом, а потом с react-flux)?
Ruslan
А еще интересно, чем wai отличается от scotty? Что реально удобнее?
Anonymous
Anonymous
а WAI это как Rack в Ruby или как Ring в Clojure
Anonymous
интерфейс для веб сервера
Vladimir
А это. Интерполяция строк так просто в хаскеле не получается?
Vladimir
Без темплейтов и квазиквотеров
Nikita
вроде не
Alexander
Почему бы и не передаешь Map String SomeClassName
Alexander
Где SomeClassName это обертка для нужных операций экзестенциальная
Misha
Misha
я тоже интересовался темой недавно, там не сильно все плохо, interpolate вполне себе нормальная бибилиотека, получается что-то типа
let message = [i|Error saving snapshot to #{storeDir}: #{e} |] in ...
Misha
минимум синтаксиса
Misha
в сравнении скажем, со скалой или, простихоспади, перлом
Misha
в смысле в них это сделано совсем минимально
Misha
ну а тут приходится квадратную скобочку приписать впереди
Alexander
Misha
а как тут Map поможет?
Vladimir
ну про квазиквотеры я в yesod читал, в принципе терпимо
Vladimir
Тут уже поднимался вопрос, вроде, но я что-то пропустил. Как писать инстансы для не своих типов? Например, для (Double, Double)? Нужны FlexibleInstances, но тогда orphaned instance вылезает, ясен пень. На него можно забить?
Vladimir
ну, то есть я прочитал, почему на него не стоит забивать
Vladimir
но как "по уму" тогда сделать?
Alexander
@MikhailTikhonov если хочешь дешево по синтаксису как в перлах, то делаешь так же как сделано в Text.Printf
Alexander
когда просто текст, и к нему параметры, параметры или позиционно или мапом
Alexander
причем либы я такие точно видел, но подробно не смотрел
Alexander
Alexander
в. воспользоваться reflection 😏
Alexander
но я бы выбирал из а или б
Misha
"завернуть в newtype"
Misha
o!
Misha
не думал про такое, но да, очевидное решение
Misha
хотя и "неаккуратненько"
Vladimir
я вот думал, только что-то пока не додумал)
Mikhail
Misha
а кто как парсит даты?
Misha
вот это https://hackage.haskell.org/package/time-1.7/docs/Data-Time-Format.html выглядит как кошмар какой-то, кидается исключениями и кажется лезет IO
Misha
мне из строки 20121123112233 сделать UTCTime
Misha
и это оказывается нетривиальная задача
Quet
это хаскель же
Misha
ну некоторые другие задачи решаются красиво
Misha
хотелось бы типа
Quet
если б тебе какой гомофунктор надо было преобразовать
Quet
то да
Quet
а ты с какой-то датой тут
Misha
да ладно
Misha
concurrency
Misha
ну и парсеры вообще
Misha
но парсеры дат почему-то говно
Quet
а чем тебя не устраивает time этот?
Quet
в IO оно лезет ток если текущую дату получить (логично)
Quet
парсинг там есть
Misha
он таймзону лезет получать в IO видимо
Misha
и он монструзный
Misha
и выкидывает exception
Quet
ты же говоришь про UTCTime какая там таймзона
Quet
какой эксепшен?
Misha
если не парсится
Quet
если не парсится он делает фейл в монаде
Quet
причем тут эксепшен
Misha
а, логично
Misha
но дико монструозно
Quet
подсунь ему туда Maybe и будет тебе твой Nothing если не парсится
Quet
ну епт, хаскель же
Quet
чо ты ждал )
Misha
действительно
Vladimir
Я для работы с датами вот этот пекедж использовал https://hackage.haskell.org/package/utc-0.2.0.1/docs/Data-UTC.html
Vladimir
@lolepezy
Vladimir
Я не парсил, только арифметику делал, но он вроде парсить тоже умеет
Vladimir
и, да, тоже эксепшены бросает, это грустно