@haskellru

Страница 1427 из 1551
Евгений
29.08.2018
07:52:43
Возможно а64м быстренько объяснит тебе сейчас, что хашкел - это не МЛ
Я могу ещё заметить, что в ML обычно rank1-полиморфизм, так что полноценного System F там и нету. Кроме хаскеля он есть в Coq в виде Prop

Лучше не надо я и так верю что он может
Хаскель не ML, в ML'ях рекорды сносные *бадабумс*

Oleg
29.08.2018
07:59:09
Евгений
29.08.2018
08:15:18
Ну, модуль не сущность первого порядка, если у тебя что-то параметризовано 'a, то не получится туда функтор запихнуть. Мне кажется, что модули больше на омегу похожи

Google
Pavel
29.08.2018
08:24:11
@elemir90 @odomontois время от времени хочется спросить вас: «Откуда вы все эти понятия и термины взяли и как они в практическом применении вам помогают решать задачи» ?

Евгений
29.08.2018
08:25:18
Я просто игрался со стандарт ML'ем лет 12 назад. Никак не помогают, я даже не программистом работаю

Евгений
29.08.2018
08:27:51
Лучше в @haskell_blah, не люблю когда в личку пишут

Misha
29.08.2018
08:35:53
а кто видел criterion, который делает вот так: benchmarking STM IxSet big/select field 3 time 237.0 ms (199.7 ms .. 261.0 ms) 0.996 R² (0.994 R² .. 1.000 R²) mean NaN s (NaN s .. NaN s) std dev 0.0 s (0.0 s .. 0.0 s) variance introduced by outliers: -9223372036854775808% (severely inflated) stm-ix-benchmarks: Statistics.Quantile.weightedAvg: Sample is empty

это как понимать?

Dmitry
29.08.2018
08:36:43
У меня такое бывало, когда комп время обновлял

Отматывал назад

Misha
29.08.2018
08:38:26
хм

в моем случае это вполне себе воспроизводимый результат

kana
29.08.2018
08:55:50
@A64m_qb0 ArgumentDo отклонили? Почему?

A64m
29.08.2018
08:56:28
чего отклонили?

Google
kana
29.08.2018
08:57:18
тут вроде closed - https://ghc.haskell.org/trac/ghc/ticket/10843 (мб конечно closed как релазиовано) на 8.4 все еще не работает

A64m
29.08.2018
08:59:08
https://ghc.haskell.org/trac/ghc/ticket/10843#comment:46

есть в 8.6

Misha
29.08.2018
09:02:31
какая-то унылая фича, экономия одного $ что ли?

A64m
29.08.2018
09:03:35
да

Alexander
29.08.2018
09:11:45
на самом же деле не одного $

а просто меньше лиспа

вместо

lisp (is here) (and there) (and everywhere)

без скобочек писать

одним $ там не выправить

если я правильно arguments do помню

Maxim
29.08.2018
09:14:01
То есть ifM теперь можно чуть красивее писать? (щас кто-нибудь скажет что он не нужен)

Pineapple
29.08.2018
09:14:38
Не нужен, кнонечно

Maxim
29.08.2018
09:15:04
А почему?

Alexander
29.08.2018
09:15:15
не нужен

Misha
29.08.2018
09:15:27
Потому что есть when?

Dmitry
29.08.2018
09:15:45
whenM

Pineapple
29.08.2018
09:16:03
predicate >>= \case True → wheTrue False → whenFalse

kana
29.08.2018
09:16:35
ой нет, матчить по булу - последнее дело

Google
Dmitry
29.08.2018
09:16:54
А чего бы нет?

Maxim
29.08.2018
09:17:20
whenM
Как будто в when / whenM можно запихать блок else

Ilya
29.08.2018
09:17:44
матчить стандартные типы - последнее дело:)

Maxim
29.08.2018
09:17:44
Меня вот все ещё почему-то подсознательно смущает guard, хотя я понимаю как он работает

Pineapple
29.08.2018
09:18:21
матчить стандартные типы - последнее дело:)
Почему же? Они в чём-то ущербны?

Ilya
29.08.2018
09:18:34
Почему же? Они в чём-то ущербны?
Потому что они уже заматчены

either, maybe, foldr, first/second

A64m
29.08.2018
09:19:37
если я правильно arguments do помню
правильно Prelude> foo a b c = c Prelude> :{ Prelude| foo do 1 Prelude| do 2 Prelude| do 3 Prelude| :} <interactive>:3:5: error: Unexpected do block in function application: do 1 You could write it with parentheses Or perhaps you meant to enable BlockArguments? Prelude> :set -XBlockArguments Prelude> :{ Prelude| foo do 1 Prelude| do 2 Prelude| do 3 Prelude| :} 3

Alexander
29.08.2018
09:20:25
на самом деле для catch bracket и подобных функций удобно может быть

меня эти скобки бесили слегка

и даже делал flip catch smallHandler $ do ...

только ради того, чтобы удобно большой блок написать

Pineapple
29.08.2018
09:21:10
either, maybe, foldr, first/second
Не люблю either/maybe. если аргументы-функции сколько-нибудь длинные. Лучше явный case

Ilya
29.08.2018
09:21:58
Ну case конечно вербознее

Dmitry
29.08.2018
09:23:07
И линейнее

kana
29.08.2018
09:23:13
@xgrommx не видел еще генерацию рекурсоров через генерики?

Anatolii
29.08.2018
09:28:32
меня эти скобки бесили слегка
меня тоже бесили, с do приятнее намного

Alexander
29.08.2018
09:29:55
foo do f 1 do f 2 do f 3 вроде же?

A64m
29.08.2018
09:30:52
Google
A64m
29.08.2018
09:31:47
foo do f 1 do f 2 do f 3 вроде же?
а вот это сработает

kana
29.08.2018
09:32:40
хм, выглядит как будто роль do расширили

A64m
29.08.2018
09:32:49
не только

к примеру такое сработает > concatMap \case {Just x -> [x]; _ -> []} [Just 1, Nothing]

ну и такое Prelude> :{ Prelude| concatMap \case Prelude| Just x -> [x] Prelude| Nothing -> [] Prelude| [Just 1, Nothing] Prelude| :} [1]

Maxim
29.08.2018
09:35:40
do вроде всегда мог без монад работать. Если строка одна, то и бинда нет, значит монада не нужна

A64m
29.08.2018
09:36:10
это-то да

Admin
ERROR: S client not available

Yuriy
29.08.2018
10:10:13
do вроде всегда мог без монад работать. Если строка одна, то и бинда нет, значит монада не нужна
одна строка-действие и сколько угодно let. хотя это выглядит странно

kana
29.08.2018
10:14:46
ты про катаморфизмы?
да, независимый

Александр
29.08.2018
10:15:37
Чат, говорят, что вот этот код работает в 8.0.2 и не работает в 8.2.2 (функция dupChan ведет себя неверно): https://github.com/crabmusket/haskell-simple-concurrency/blob/master/src/DuplicatingChannels.hs Кто-нибудь в курсе?

Denis
29.08.2018
10:15:47
да, независимый
ну видел только через TH

да, независимый
ну и generic recursion schemes

kana
29.08.2018
10:18:04
меня кстати давно мучает мысль, что фраза "через рекурсор/катаморфизм можно выразить любую функцию" не верна

типа в общем случае это будет скорее f . cata g вместо cata g

Denis
29.08.2018
10:19:23
типа в общем случае это будет скорее f . cata g вместо cata g
ну так есть же законы для катаморфизмов) ну и плюс не только cata юзать, а например другие схемы

Misha
29.08.2018
10:20:52
это известный баг https://github.com/bos/criterion/issues/161 на snaphot 12.* не воспроизводится лень разбираться что именно там сломано
возможно, проблема лечится переходом с criterion 1.4 на 1.5, но может дело в транзитивных зависимостях

Denis
29.08.2018
10:22:13
@kana_sama что знаю из последнего https://github.com/Lysxia/generic-recursion-schemes https://github.com/frerich/catamorphism

Google
kana
29.08.2018
10:22:59
ну так есть же законы для катаморфизмов) ну и плюс не только cata юзать, а например другие схемы
ну нет, я к тому, что я видел утверждение именно "через кату можно выразить все"

Denis
29.08.2018
10:23:38
kana
29.08.2018
10:23:46
нет, именно кату

ну там было более специализированное утверждение "через foldr/reduceRight можно выразить все для работы со списком"

Mikhail
29.08.2018
10:25:17
Подскажите, а как называют софт для тестирования алгоритмов на правильность ( например, для соревновательного программирования )? И есть ли что-то подобное на Хаскелле?

kana
29.08.2018
10:28:23
это скорее всего да (но думаю не все)
не все, как я сказал, нужен так f . foldr g i

например если мы сворачиваем в пару для стейта, а вернуть нужно первый элемент пары

Denis
29.08.2018
10:29:13
kana
29.08.2018
10:29:26
как

в трансдьюсерах типа сделали для этого финализирующую функцию с одним аргументов, которая вызывается в конце

какая альтернатива у алгебр?

Denis
29.08.2018
10:30:30
f . foldr g a = foldr h b, where f a = b, f (g x y) = h x (f y)

какая альтернатива у алгебр?
ну а что плохого в f . cata alg?

kana
29.08.2018
10:32:19
в том, что не подходит под утверждение "одной катой выразить все"

Denis
29.08.2018
10:33:32
ну если f работает со скаляром каким-то, то ничего плохого не вижу, а так в другом случае можно алгебры складывать и компоузить как естественные преобразования

kana
29.08.2018
10:33:50
да речь не в "плохое/хорошее"

а собственно в корректности утверждения

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