Dmitry
Вроде, в конце 70-ых? В Ada
Alexander
кстати, а есть реализации System F за пределами семейства ML?
Alexander
в актуальных языках, разумеется. Не обязательно статической
Oleg
Parametric polymorphism was first introduced to programming languages in ML in 1975_
Oleg
кстати, а есть реализации System F за пределами семейства ML?
Возможно а64м быстренько объяснит тебе сейчас, что хашкел - это не МЛ
Alexander
Лучше не надо я и так верю что он может
Зигохистоморфный
http://simonjf.com/2018/08/27/cmm-of-wasm.html
Евгений
Возможно а64м быстренько объяснит тебе сейчас, что хашкел - это не МЛ
Я могу ещё заметить, что в ML обычно rank1-полиморфизм, так что полноценного System F там и нету. Кроме хаскеля он есть в Coq в виде Prop
Евгений
Лучше не надо я и так верю что он может
Хаскель не ML, в ML'ях рекорды сносные *бадабумс*
Евгений
Ну, модуль не сущность первого порядка, если у тебя что-то параметризовано 'a, то не получится туда функтор запихнуть. Мне кажется, что модули больше на омегу похожи
Pavel
@elemir90 @odomontois время от времени хочется спросить вас: «Откуда вы все эти понятия и термины взяли и как они в практическом применении вам помогают решать задачи» 😊
Евгений
Я просто игрался со стандарт ML'ем лет 12 назад. Никак не помогают, я даже не программистом работаю
Евгений
Лучше в @haskell_blah, не люблю когда в личку пишут
Misha
а кто видел 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
Misha
это как понимать?
Dmitry
У меня такое бывало, когда комп время обновлял
Dmitry
Отматывал назад
Misha
хм
Misha
в моем случае это вполне себе воспроизводимый результат
кана
@A64m_qb0 ArgumentDo отклонили? Почему?
A64m
чего отклонили?
кана
тут вроде closed - https://ghc.haskell.org/trac/ghc/ticket/10843 (мб конечно closed как релазиовано) на 8.4 все еще не работает
A64m
https://ghc.haskell.org/trac/ghc/ticket/10843#comment:46
A64m
есть в 8.6
Misha
какая-то унылая фича, экономия одного $ что ли?
A64m
да
Alexander
на самом же деле не одного $
Alexander
а просто меньше лиспа
Alexander
вместо
Alexander
lisp (is here) (and there) (and everywhere)
Alexander
без скобочек писать
Alexander
одним $ там не выправить
Alexander
если я правильно arguments do помню
Maxim
То есть ifM теперь можно чуть красивее писать? (щас кто-нибудь скажет что он не нужен)
Алексей
Не нужен, кнонечно
Maxim
А почему?
Alexander
не нужен
Misha
Потому что есть when?
Dmitry
whenM
Алексей
predicate >>= \case True → wheTrue False → whenFalse
кана
ой нет, матчить по булу - последнее дело
Dmitry
А чего бы нет?
Maxim
whenM
Как будто в when / whenM можно запихать блок else
Ilya
матчить стандартные типы - последнее дело:)
Maxim
Меня вот все ещё почему-то подсознательно смущает guard, хотя я понимаю как он работает
Алексей
матчить стандартные типы - последнее дело:)
Почему же? Они в чём-то ущербны?
Ilya
Почему же? Они в чём-то ущербны?
Потому что они уже заматчены
Ilya
either, maybe, foldr, first/second
A64m
если я правильно 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
на самом деле для catch bracket и подобных функций удобно может быть
Alexander
меня эти скобки бесили слегка
Alexander
и даже делал flip catch smallHandler $ do ...
Alexander
только ради того, чтобы удобно большой блок написать
Алексей
either, maybe, foldr, first/second
Не люблю either/maybe. если аргументы-функции сколько-нибудь длинные. Лучше явный case
Ilya
Ну case конечно вербознее
Dmitry
И линейнее
кана
@xgrommx не видел еще генерацию рекурсоров через генерики?
Anatolii
меня эти скобки бесили слегка
меня тоже бесили, с do приятнее намного
Alexander
foo do f 1 do f 2 do f 3 вроде же?
A64m
foo do f 1 do f 2 do f 3 вроде же?
а вот это сработает
кана
хм, выглядит как будто роль do расширили
A64m
не только
A64m
к примеру такое сработает > concatMap \case {Just x -> [x]; _ -> []} [Just 1, Nothing]
A64m
ну и такое Prelude> :{ Prelude| concatMap \case Prelude| Just x -> [x] Prelude| Nothing -> [] Prelude| [Just 1, Nothing] Prelude| :} [1]
Maxim
do вроде всегда мог без монад работать. Если строка одна, то и бинда нет, значит монада не нужна
A64m
это-то да
Cheese
do вроде всегда мог без монад работать. Если строка одна, то и бинда нет, значит монада не нужна
одна строка-действие и сколько угодно let. хотя это выглядит странно
кана
ты про катаморфизмы?
да, независимый
Alexander
Чат, говорят, что вот этот код работает в 8.0.2 и не работает в 8.2.2 (функция dupChan ведет себя неверно): https://github.com/crabmusket/haskell-simple-concurrency/blob/master/src/DuplicatingChannels.hs Кто-нибудь в курсе?
Зигохистоморфный
да, независимый
ну видел только через TH
Зигохистоморфный
да, независимый
ну и generic recursion schemes
кана
меня кстати давно мучает мысль, что фраза "через рекурсор/катаморфизм можно выразить любую функцию" не верна
кана
типа в общем случае это будет скорее f . cata g вместо cata g