Aleksei (astynax)
optText "" = Nothing optText t = Just t
Aleksei (astynax)
Вот такое ок и красиво
Aleksei (astynax)
и where не общий
Это боль :(
A64m
я в свое время чуть не бросил изучать хаскель заглянув в ЯХТ и увидав там адовые лесенки из кейсов и ифов
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
Aleksei (astynax)
Вот! Я про такие случаи
Aleksei (astynax)
Сам то точе часто предпочитаю case. Даже LambdaCase ;)
Leonid 🦇
у меня в конпиляторе такое было для тайпчеков всяких везде. Правда я тогда и хаскель толком не умел
Антон
есть, но там точка еще, проще сделать одну проверку, а не две
is_number = uncurry (and `on` numbers_only) . second tailSafe . span (/= '.') where numbers_only = map (`elem` ['0'..'9'])
Leonid 🦇
да сравнивайте вы уже с >= '0' && c <= '9'
Aleksei (astynax)
numbers_only, is_number - не надо так!
Leonid 🦇
а вообще на хакадже есть is-number вроде
Aleksei (astynax)
left-pad
A64m
для такого уже комбинаторный парсер надо
Антон
Перенимаем опыт JS
Leonid 🦇
Докатились
ну так в Acme.
Антон
left-pad
is-thirteen
Leonid 🦇
left-pad точно есть
Антон
да сравнивайте вы уже с >= '0' && c <= '9'
and <$> (>= '0') <*> (<= '9')
Антон
А, не то
Aleksei (astynax)
(&&) <$> ...
Leonid 🦇
надо через моноед All
Aleksei (astynax)
`elem` "0..9" вот и пригодился алиас String = [Char]!
Leonid 🦇
ого, а чо так можно?
Антон
Нет, конечно
Aleksei (astynax)
:)
Leonid 🦇
['0'..'9']
Антон
['0'..'9']
Вот так, да
Aleksei (astynax)
`elem` "0123456789." во!
Leonid 🦇
ну да
кана
почти как в жс
eahqzsr
Все же flip elem или `elem` ?
кана
`elem` конечно
Aleksei (astynax)
`улем` инде
Антон
`elem` "0123456789." во!
Тогда "1............9" считается числом
eahqzsr
Ну это к теме обсуждения не относится
Aleksei (astynax)
Тогда "1............9" считается числом
Это альтернатива для `elem` '.':['0'..'9'] была :)
Антон
Это альтернатива для `elem` '.':['0'..'9'] была :)
Что-то не кажется более красивым этот вариант
eahqzsr
даже не так, тут просто chislo = all (`elem` "0123456789.")
Так эта альтернатива давно была предложена
кана
Это альтернатива для `elem` '.':['0'..'9'] была :)
так `elem` '.':['0'..'9'] была альтернативой `elem` "0123456789."
Aleksei (astynax)
Не читаю чат дальше одного экрана! (иногда)
Aleksei (astynax)
Можно readMaybe вообще использовать, но могут подсунуть 1e100 :)
Alexander
https://github.com/phadej/idioms-plugins
Cheese
https://github.com/phadej/idioms-plugins
([ ]) — это те самые бананы?
Alexander
вроде да
Cheese
https://github.com/phadej/idioms-plugins
мотивирующий пример не мотивирует. можно ведь просто написать liftA2
Cheese
идея же вроде в том, чтобы m a и a автоматически определять?
Ilya
([ ]) — это те самые бананы?
вроде нет. Бананы -- это же про рекурсивные схемы
Ilya
а это idiom brackets из пейпера про аппликативы (которые они изначально идиомами назвали)
Ilya
суть в том, чтобы писать ([f x y z]) вместо f <$> x <*> y <*> z
Ilya
чтобы было максимально похоже на "чистую" версию
Зигохистоморфный
Макбрайд творение
Ilya
угу
Cheese
чем это лучше liftAₙ? не надо число подбирать?
Ilya
и у него в SHE они уже давно (правда не знаю, поддерживает ли он его еще)
Ilya
чем это лучше liftAₙ? не надо число подбирать?
принципиально, наверное, ничем не лучше. Не надо число подбирать, да. И вообще, на мой взгляд, выглядит немного лучше. Впрочем, дело вкуса, конечно
Ilya
Они в пейпере педалировали тему, что аппликативные вычисления не должны выглядеть как-то иначе, чем чистые, если я ничего не путаю
Alexander
они же должны pure видеть?
Alexander
и.е. не ([ foo a (pure b) ]) писать
Ilya
насколько я понял, pure вставляется для чистых значений автоматом
Ilya
как понять, m a это чистое или нет
Ilya
может я хочу m (m a), тогда нужен pure
Ilya
по типу функции?
Ilya
мм.. что-то я фигню пишу, надо на тип всего выражения смотреть
A64m
в идиом брекетс должно быть можно операторы использовать инфиксно
Ilya
по типу функции?
так типы полиморфные же
Ilya
const тот же