Aleksei (astynax)
optText "" = Nothing
optText t = Just t
Aleksei (astynax)
Вот такое ок и красиво
Aleksei (astynax)
A64m
я в свое время чуть не бросил изучать хаскель заглянув в ЯХТ и увидав там адовые лесенки из кейсов и ифов
Leonid 🦇
Aleksei (astynax)
Беда переписывания с мультиклозов на case - несколько параметров у функции. Лишний визуальный шум от кортежей - фу
A64m
с однострочностью все наоборот, когда все это повторение в соседних строках - это только раздражает, а через несколько строк это лучше читается чем висящий паттерн кейса относящийся не пойми к чему
Leonid 🦇
вам ленивость дали что-бы вы могли писать всё в where и потом в кейзах писать одну строчку
Aleksei (astynax)
"мало матчинга, много логики" = case
"много матчинга, мало логики" = клозы
Aleksei (astynax)
Мультиклозы с общим where были бы норм ваще
Leonid 🦇
мне кажется что часто много матчинга и глубокие структуры это скорее от лени написать еще один АДТ и зарание подготовить для проблемной области
Aleksei (astynax)
Нет же, вот ты матчишь два переметра на предмет комбинаций - отличный вариант для мультиклоза
Leonid 🦇
Вот у Джаспера про это https://jaspervdj.be/posts/2016-05-11-ad-hoc-datatypes.html
Leonid 🦇
Aleksei (astynax)
Вот! Я про такие случаи
Aleksei (astynax)
Сам то точе часто предпочитаю case. Даже LambdaCase ;)
Leonid 🦇
у меня в конпиляторе такое было для тайпчеков всяких везде. Правда я тогда и хаскель толком не умел
Leonid 🦇
да сравнивайте вы уже с >= '0' && c <= '9'
Aleksei (astynax)
numbers_only, is_number - не надо так!
Leonid 🦇
а вообще на хакадже есть is-number вроде
Антон
Aleksei (astynax)
left-pad
A64m
для такого уже комбинаторный парсер надо
Антон
Перенимаем опыт JS
Антон
Leonid 🦇
left-pad точно есть
Антон
Антон
А, не то
Aleksei (astynax)
(&&) <$> ...
Leonid 🦇
надо через моноед All
Aleksei (astynax)
`elem` "0..9" вот и пригодился алиас String = [Char]!
Leonid 🦇
ого, а чо так можно?
Антон
Нет, конечно
Aleksei (astynax)
:)
Leonid 🦇
['0'..'9']
Антон
Aleksei (astynax)
`elem` "0123456789." во!
Leonid 🦇
ну да
кана
кана
почти как в жс
eahqzsr
Все же flip elem или
`elem`
?
кана
`elem` конечно
Антон
Aleksei (astynax)
`улем` инде
eahqzsr
Ну это к теме обсуждения не относится
Антон
eahqzsr
Aleksei (astynax)
Не читаю чат дальше одного экрана! (иногда)
Aleksei (astynax)
Можно readMaybe вообще использовать, но могут подсунуть 1e100 :)
Alexander
https://github.com/phadej/idioms-plugins
Cheese
Alexander
вроде да
Cheese
идея же вроде в том, чтобы m a и a автоматически определять?
Ilya
а это idiom brackets из пейпера про аппликативы (которые они изначально идиомами назвали)
Ilya
суть в том, чтобы писать ([f x y z]) вместо f <$> x <*> y <*> z
Ilya
чтобы было максимально похоже на "чистую" версию
Зигохистоморфный
Макбрайд творение
Ilya
угу
Cheese
чем это лучше liftAₙ? не надо число подбирать?
Ilya
и у него в SHE они уже давно (правда не знаю, поддерживает ли он его еще)
Ilya
Они в пейпере педалировали тему, что аппликативные вычисления не должны выглядеть как-то иначе, чем чистые, если я ничего не путаю
Alexander
они же должны pure видеть?
Alexander
и.е. не ([ foo a (pure b) ]) писать
Ilya
насколько я понял, pure вставляется для чистых значений автоматом
Ilya
Ilya
как понять, m a это чистое или нет
Ilya
может я хочу m (m a), тогда нужен pure
Ilya
по типу функции?
Ilya
мм.. что-то я фигню пишу, надо на тип всего выражения смотреть
A64m
в идиом брекетс должно быть можно операторы использовать инфиксно
Ilya
const тот же