@haskellru

Страница 1326 из 1551
Leonid
06.07.2018
10:47:27
left-pad точно есть

Антон
06.07.2018
10:48:09
А, не то

Aleksey
06.07.2018
10:49:20
(&&) <$> ...

Google
Leonid
06.07.2018
10:49:52
надо через моноед All

Aleksey
06.07.2018
10:50:14
`elem` "0..9" вот и пригодился алиас String = [Char]!

Leonid
06.07.2018
10:50:36
ого, а чо так можно?

Антон
06.07.2018
10:50:51
Нет, конечно

Aleksey
06.07.2018
10:50:57
:)

Leonid
06.07.2018
10:51:05
['0'..'9']

Антон
06.07.2018
10:51:11
['0'..'9']
Вот так, да

Aleksey
06.07.2018
10:51:14
`elem` "0123456789." во!

Leonid
06.07.2018
10:51:26
ну да

kana
06.07.2018
10:52:56
почти как в жс

shadowjack
06.07.2018
10:53:02
Все же flip elem или `elem` ?

kana
06.07.2018
10:53:17
`elem` конечно

Google
Антон
06.07.2018
10:53:23
Aleksey
06.07.2018
10:53:43
`улем` инде

Антон
06.07.2018
10:53:44
`elem` "0123456789." во!
Тогда "1............9" считается числом

shadowjack
06.07.2018
10:54:25
Ну это к теме обсуждения не относится

Aleksey
06.07.2018
10:54:33
Тогда "1............9" считается числом
Это альтернатива для `elem` '.':['0'..'9'] была :)

Антон
06.07.2018
10:55:22
Это альтернатива для `elem` '.':['0'..'9'] была :)
Что-то не кажется более красивым этот вариант

shadowjack
06.07.2018
10:57:19
даже не так, тут просто chislo = all (`elem` "0123456789.")
Так эта альтернатива давно была предложена

kana
06.07.2018
10:57:38
Это альтернатива для `elem` '.':['0'..'9'] была :)
так `elem` '.':['0'..'9'] была альтернативой `elem` "0123456789."

Aleksey
06.07.2018
10:58:05
Не читаю чат дальше одного экрана! (иногда)

Можно readMaybe вообще использовать, но могут подсунуть 1e100 :)

Alexander
06.07.2018
11:59:58
https://github.com/phadej/idioms-plugins

Yuriy
06.07.2018
12:07:52
https://github.com/phadej/idioms-plugins
([ ]) — это те самые бананы?

Alexander
06.07.2018
12:08:04
вроде да

Yuriy
06.07.2018
12:14:37
https://github.com/phadej/idioms-plugins
мотивирующий пример не мотивирует. можно ведь просто написать liftA2

идея же вроде в том, чтобы m a и a автоматически определять?

Ilya
06.07.2018
12:17:18
([ ]) — это те самые бананы?
вроде нет. Бананы -- это же про рекурсивные схемы

а это idiom brackets из пейпера про аппликативы (которые они изначально идиомами назвали)

суть в том, чтобы писать ([f x y z]) вместо f <$> x <*> y <*> z

чтобы было максимально похоже на "чистую" версию

Denis
06.07.2018
12:20:43
Макбрайд творение

Google
Ilya
06.07.2018
12:20:53
угу

Yuriy
06.07.2018
12:20:57
чем это лучше liftAₙ? не надо число подбирать?

Ilya
06.07.2018
12:21:36
и у него в SHE они уже давно (правда не знаю, поддерживает ли он его еще)

чем это лучше liftAₙ? не надо число подбирать?
принципиально, наверное, ничем не лучше. Не надо число подбирать, да. И вообще, на мой взгляд, выглядит немного лучше. Впрочем, дело вкуса, конечно

Они в пейпере педалировали тему, что аппликативные вычисления не должны выглядеть как-то иначе, чем чистые, если я ничего не путаю

Alexander
06.07.2018
12:25:09
они же должны pure видеть?

и.е. не ([ foo a (pure b) ]) писать

Ilya
06.07.2018
12:26:46
насколько я понял, pure вставляется для чистых значений автоматом

Ilya
06.07.2018
12:29:18
как понять, m a это чистое или нет

может я хочу m (m a), тогда нужен pure

Ilya
06.07.2018
12:30:19
по типу функции?

Ilya
06.07.2018
12:31:24
мм.. что-то я фигню пишу, надо на тип всего выражения смотреть

A64m
06.07.2018
12:31:51
в идиом брекетс должно быть можно операторы использовать инфиксно

Ilya
06.07.2018
12:32:09
по типу функции?
так типы полиморфные же

const тот же

Yuriy
06.07.2018
12:32:44
так типы полиморфные же
не всегда. можно решить задачу хотя бы для случая известных типов

A64m
06.07.2018
12:33:05
ну и у макбрайда же еще куча синтаксиса для pure *> <* join

kana
06.07.2018
13:08:49
когда-нибудь lens установится

Leonid
06.07.2018
13:09:44
или нет

Google
shadowjack
06.07.2018
13:18:11
Какие вообще практические применения у applicative?

Ilya
06.07.2018
13:24:23
Любая монада -- аппликатив

Ilya
06.07.2018
13:25:52
Так что практические применения такие же, плюс ещё

shadowjack
06.07.2018
13:26:50
Я конечно имел в виду аппликативы не являющиеся монадами

Ilya
06.07.2018
13:27:42
Validation http://hackage.haskell.org/package/validation

Ilya
06.07.2018
13:27:47
Const

Admin
ERROR: S client not available

Ilya
06.07.2018
13:28:18
ZipList уже упомянутый

Хотя я лично придерживаюсь точки зрения, что зиповать правильнее вектора, а вектор уже монада

Ilya
06.07.2018
13:30:38
Ilya
06.07.2018
13:30:40
Есть эффективная реализация парсерных комбинаторов, которые аппликатив, но не монада

Ilya
06.07.2018
13:31:20
Там грамматика, правда, по моему LL(1)

Denis
06.07.2018
13:31:24
моноидальные парсера

Ilya
06.07.2018
13:31:55
Моноидальные -- это по моему несколько другое

Ilya
06.07.2018
13:32:08
Там были именно аппликативные

Но почему-то на хаккадже я не нашёл

Google
Ilya
06.07.2018
13:34:52
bind, такой что ap это zip
А почему для списка так нельзя сделать?

Чем вектор так отличается

Ilya
06.07.2018
13:35:38
А ссылку можно кстати?
https://github.com/aistrate/Articles/blob/master/Haskell/Deterministic,%20Error-Correcting%20Combinator%20Parsers%20(Swierstra,%20Duponcheel).pdf

A64m
06.07.2018
13:37:06
Я конечно имел в виду аппликативы не являющиеся монадами
практическая ценность в том, что Applicative менее строгий констрейнт, так что дает возможности, вроде линз или параллельного вычисления

Ilya
06.07.2018
13:37:24
Чем вектор так отличается
нет гарантированной длины, bind для вектора вычисляет f на каждом элементе и берет диагональ.

с листом f может пустой список вернуть

Denis
06.07.2018
13:38:22
@ilya_yanok это? http://hackage.haskell.org/package/applicative-parsec

Ilya
06.07.2018
13:40:18
нет гарантированной длины, bind для вектора вычисляет f на каждом элементе и берет диагональ.
А, ты имеешь в виду тип = вектор фиксированной длины? Не Data.Vector

Ilya
06.07.2018
13:40:44
да, сорри что не уточнил

Ilya
06.07.2018
13:40:59
Теперь понятно, спасибо

Ilya
06.07.2018
13:43:37
@ilya_yanok это? http://hackage.haskell.org/package/applicative-parsec
сложно сказать. Реализация выглядит другой. А определить сходу эквивалентная или нет я не могу

Yuriy
06.07.2018
13:53:14
https://hackage.haskell.org/package/regex-applicative

Ilya
06.07.2018
13:59:00
Ilya
06.07.2018
13:59:46
Как чего, программ

Евгений
06.07.2018
13:59:47
Написания продукта

Ну, гм, хаскель быстрее только других языков для прочистки мозгов

Ilya
06.07.2018
14:00:10
Быстрое написание быстрых программ

Евгений
06.07.2018
14:00:24
shadowjack
06.07.2018
14:01:11
Звучит как раст
Наверное нужно добавить "и чтоб кровь из глаз не шла"

Страница 1326 из 1551