Anonymous
Давно пора это запостить было
Дима
Я больше вот это порекомендую
Дима
https://github.com/facebook/react/issues/7942
Vasiliy
раз уж речь про передачу управления руками - а для сабжа есть что-то подобное?
Vasiliy
есть несколько тредов, нужно как-то замутить между ними синхронизацию так, чтоб они могли ждать друг друга
Vasiliy
например, они все стартовали, A сделал свою часть работы, как-то об этом сообщил, потом B и C свои части сделали, сообщили, опять начал A работать итд
Anonymous
MVar?
Vasiliy
ну это понятно, сейчас на MVar-ах и сделано, но вдруг есть какой-то православный способ
Vasiliy
было бы здорово что-то типа
do { inThread a (print "hello"); inThread b (print "world") }
Vasiliy
потому что в принципе все действия последовательны, только выполняться каждый кусок должен в своём треде
Влод
чтобы понять о какой лени идёт речь: facebook делает так чтобы в js можно было const(1, throw new Exception()) + 2 // = 3
?
Зигохистоморфный
нет
Влод
хух
Зигохистоморфный
откуда в жс такое возможно?
Зигохистоморфный
они же не жс переписывают а какой-то новый реакт-велосипед делают
кана
Через лямбды разве что
Влод
ну тут все про какую то лень говорят, а определений не вводят.
Дима
Зигохистоморфный
Дима
Я не вполне понимаю, как такие резко догматические высказывания могут сосуществовать с тем фактом, что в этот target можно скомпилировать в принципе всё
Viacheslav
а тут не принято осуждать дискуссии не по теме чата?
Vasiliy
в принципе, всё можно скомилировать во всё, все тюринг-полные языки эквивалентны
Дима
То есть, наваливая уровни абстракции мы вдруг переходим через какую-то границу и обретаем свойства платформой не предоставляемые, я всё правильно понял?
Vasiliy
это не делает какой-нибудь befunge равным сабжу или тому же js
Vasiliy
а наваливая абстракции мы переходим, собственно, через границу платформы, что позволяет нам не думать о ней и её проблемах
Viacheslav
мне просто казалось что в чате про хаскель можно обуждать какие-то вещи интереснее чем: js или хэйт js-а?
Vasiliy
само собой, абстракции дырявы, но в определённой мере это помогает
Viacheslav
как там депендент тайп хаскель поживает?
Viacheslav
например
Vasiliy
Viacheslav
когда Hask уже станет категорией наконец
Viacheslav
другие вечные вопросы
Viacheslav
Haskell 2020
Anonymous
Не раньше, чем когда из хаскелля выкинут bottom - т.е., никогда
Viacheslav
ну вот, уже гораздо интереснее разговор
Anonymous
потому что let x = x in x :: forall a . a
Viacheslav
а то в какой чат не зайдешь там везде js, я ничего против него не имею, но для этого есть отдельные чаты
Anonymous
Hate must flow
Anonymous
Who controls the hate - controls the universe
Дима
Max
JS - новая Java
Anonymous
js это альфа и омега программирования
Max
Логично, что его не любят.
Max
Но не лямбда?
Anonymous
О, кстати, про жаву. Eta никто ещё не пользовал?
Anonymous
Vladislav
когда Hask уже станет категорией наконец
Так это уже категория, просто ее упрощенно преподносят (объекты — типы, стрелки — функции), а надо чуток точнее (объекты — типы, стрелки — тотальные функции). Нет? Или кроме боттомов еще есть проблемы?
Viacheslav
ну в хаскелле все-таки не все функции тотальные
Vladislav
Так категория не обязана все функции включать
Vladislav
в Хаскеле много еще чего есть
Viacheslav
ну если это категория для языка, то все-таки это важный момент
Anonymous
боттомы невозможно отличить, а значит невозможно изьять
Vladislav
Что значит изъять?
Vladislav
Нам не нужно отличать один боттом от другого, чтобы решить писать код без них.
Vladislav
Просто не уходить в бесконечную рекурсию и исключения не выкидывать. Еще закрыть глаза на существование асинхронных исключений как явления вообще.
Viacheslav
ну вот есть языки такие как кок и агда
Viacheslav
и там все это правда, а про хаскель так сказать нельзя
Anonymous
угу. И не пользоваться чужими библиотеками. И общей рекурсией
Vladislav
Так это ж жизнь хаскелиста, законы доказываем на бумажке, а termination checking на авось.
Vladislav
Только в итоге вроде и норм выходит.
Vladislav
Вот dependent Haskell как раз интереснее, чем от боттомов огораживаться.
Vasiliy
> Просто не уходить в бесконечную рекурсию
тут есть проблема - чтоб выяснить, конечна ли рекурсия, в неё надо уйти
Vladislav
Ну т.е. берешь ты теорию категорий могучую, начинаешь что-то там про Haskell-код рассуждать, и ломается у тебя это на первом же bottom
Anonymous
+1
Vladislav
Но, казалось бы, и ничего страшного, ведь bottom и должен все ломать
Vladislav
И живешь дальше, и все хорошо
Vladislav
Меня больше волнует, что в Haskell нет релевантной квантификации, из-за чего нельзя naturality выражать и приходится ее аппроксимировать через parametricity.
Vladislav
И какой-нибудь там type f ~> g = forall a . f a -> g a из-за этого не позволяет выразить любые натруальные трансформации.
Anonymous
Что за naturality?
Anonymous
fmap f . trans == trans . fmap f, где trans :: g ~> h?
Vladislav
Да. Оно следует из parametricity, но не наоборот
Vladislav
Например, у нас в Haskell есть fmap :: forall f a b . Functor f => (a -> b) -> (f a -> f b). Но т.к. a и b введены через forall (имеем parametricity), то из первого закона fmap id = id следует и второй закон fmap (f . g) = fmap f . fmap g.
Vladislav
В теории категорий один закон из другого не следует, поэтому их два.
Vladislav
Т.к. там не parametricity используется, когда говорят "for every object exists ..."
Anonymous
Так. У хаскелля есть параметричность, из которой следует натуральность. Не означает ли это, что у хаскелля есть так же и натуральность?
Vladislav
Ага, и она везде, где параметричность
Vladislav
Но ее нет самой по себе, поэтому мы не можем выражать вещи, которые натуральны, но не параметричны
Vladislav
Точнее, можем, но на case-by-case основе, добавлением всяких там констрейнтов
Anonymous
Например?
Vladislav
Кметт такую ссылку с подробностями предлагает