
Alexander
13.06.2017
12:25:53
а ещё на самом деле надо его с czmq использовать
а иначе задолбаешься все протоколы реализовывать


Евгений
13.06.2017
17:49:23
Я очень плохо в курсе, но вообще не припомню, чтобы в подходах с грязными лямбдами межпотоковый обмен эксепшнами как-то лучше решался. Во всяких ерлангоакковских актор моделях проблема по сути игнорируется.
Но если посмотреть мотивацию в той статье - то само желание потока убить своё дитя рождается, как правило, от осознания, что он ему больше не нужен. А нежелание умирать, как сказал Александр, от осознания, что есть неосвобождённые ресурсы.
Поэтому чисто из интуиции из соседнего чата проблема как-то должна решаться линейными типами или типа того, которые вполне вяжутся с чистыми лямбдами.
Т.е. если широко посмотреть - ручное управление асинхронностью так же плохо вяжется с чистотой, как и ручное управление памятью.
Вообще я тут поразмышлял: на самом деле можно попробовать реализовать асинхронные эксепшоны и маск/анмаск с помощью хитрой стратегии редукции.
Попробую подумать ещё и формализовать


Vladimir
13.06.2017
21:07:30
https://github.com/lexi-lambda/hackett
вбрасывали уже?

Google

Dmitry
13.06.2017
21:43:18

andretshurotshka?❄️кде
14.06.2017
06:34:40

Тёма
14.06.2017
08:39:22
Чем им Typed Racked не понравился?
Недостаточно наворочен?

Max
14.06.2017
08:40:10
может не работает?

Тёма
14.06.2017
08:43:48
Ну вполне работал, когда я его пробовал.

Dmitry
14.06.2017
09:57:54
На Reddit автор объясняет, почему не typed-racket
https://www.reddit.com/r/haskell/comments/6dqf1n/realizing_hackett_a_metaprogrammable_haskell/di4n8cy/

Denis
14.06.2017
11:04:56
https://elixirforum.com/t/a-freer-monad-implemented-in-elixir/399 :D

Vladimir
14.06.2017
14:32:54
зачем нужны монады в энергичных динамических языках?

Alex
14.06.2017
14:33:16

Vladimir
14.06.2017
14:34:28

Alexander
14.06.2017
14:42:33
для инкапсуляции эффектов

Vasiliy
14.06.2017
14:42:35
затем же, зачем нужны, скажем, моноиды

Google

Vasiliy
14.06.2017
14:42:50
они просто есть

Denis
14.06.2017
14:48:11
для удобной агрегации
это же абстракция

? animufag ?
14.06.2017
14:51:22
Ну например можно написать функцию sequence один раз вместо того чтобы для каждой монады (апликатив) отдельно
Ну это для затравки диалога вброс. Так то мне тоже не очевидно есть ли профит

Denis
14.06.2017
14:53:18
я повторюсь - абстракция (унифицировать что-то похожее к одному стилю и не задумываться о реализации)

Oleg
14.06.2017
15:12:11

Тёма
14.06.2017
15:16:35

Alex
14.06.2017
15:21:18
пошла жара
сравниваем теплое с мягким

Alexander
14.06.2017
15:26:51

? animufag ?
14.06.2017
15:30:48
для инкапсуляции эффектов
вот это вот нормальный ответ?
наверное стоит всё таки действительно сменить вопрос на "зачем тайпклассы (например моноиды или функторы) в динамических языках"

Vladimir
14.06.2017
15:34:46
нет типов — нет и тайпклассов

Alex
14.06.2017
15:35:29

Vladimir
14.06.2017
15:35:39
это как в руби рассуждения об интерфейсах.

? animufag ?
14.06.2017
15:35:48
ок можешь не продолжать
я тебя понял

Vladimir
14.06.2017
15:35:57
то есть интерфейс у объекта конечно же есть
но чисто на уровне идеи

Google

? animufag ?
14.06.2017
15:36:10
сейчас найдёшь ещё одну классную аналогию

Vladimir
14.06.2017
15:36:20
на уровне рассуждений об объекте

? animufag ?
14.06.2017
15:36:35
вот на уровне идеи как назвать эти тайпклассы
вот эти функторы

Vladimir
14.06.2017
15:36:47
в джаве вот интерфейсы есть в самом языке, но это опять же из-за наличия системы типов

Denis
14.06.2017
15:37:29
ну грубо можно считать тайпклассы как трейты в скале

? animufag ?
14.06.2017
15:38:49
блабла нет типов нет и трейтов

Vladimir
14.06.2017
15:38:57

Oleg
14.06.2017
16:10:40
чисто формально, динамическая типизация /= утиная типизация
но кого это волнует

Евгений
14.06.2017
16:11:30

Denis
14.06.2017
16:11:57

Oleg
14.06.2017
16:13:11

Евгений
14.06.2017
16:13:32
экзестенциальность?
Нет, forall в конструкторах типов в хаскеле это нелепость. Там должен быть exist

Oleg
14.06.2017
16:14:50

Alexander
14.06.2017
16:16:36
data Foo = exit x . Foo x
data Foo = Foo (forall x. x)
(/thread)
*exists

? animufag ?
14.06.2017
16:17:00

Oleg
14.06.2017
16:18:28
нет типов — нет и тайпклассов

Google

Oleg
14.06.2017
16:18:36
это как в руби рассуждения об интерфейсах.
Тип, который не проверяется статически не значит отсутствующий тип. И динамические типы вполне можно в рантайме отнести (зарегистрировать) к каким-то классам, и использовать это отношение впоследствии
В какой-то ограниченной форме, питоновские метаклассы можно рассматривать в таком ракурсе

Vladimir
14.06.2017
16:20:48

Oleg
14.06.2017
16:21:17
https://clojure.org/reference/protocols

Alexander
14.06.2017
16:22:26
можно ссылку на определение типа?

Admin
ERROR: S client not available

Alexander
14.06.2017
16:22:56
т.к. теги используемые в динамических языках, я бы типами не называл
насколько я помню в Пирсе под определение они тоже не попадают

Oleg
14.06.2017
16:27:08
насколько я помню в Пирсе под определение они тоже не попадают
Цитата из Пирса
A useful—though rough—distinction divides the world of programming languages
into two parts:
* Untyped — programs simply execute flat out; there is no attempt to check
“consistency of shapes”
* Typed — some attempt is made, either at compile time or at run-time, to
check shape-consistency
either at compile time or at run-time
в кложурке несомненно делаются проверки в рантайме

Alexander
14.06.2017
16:28:39
везде делаются проверки в рантайме..
ну где не в компайл тайме

Oleg
14.06.2017
16:29:00
не везде делаются проверки на консистентность формы
иногда проверка есть только на факт наличия содержимого
в кложуре ты можешь потребовать реализацию протокола от динамического типа
Мне кажется, адепты typed racket ещё больше рассказали бы нам

Vladimir
14.06.2017
16:43:31

Google

Vasiliy
14.06.2017
16:45:09

Oleg
14.06.2017
16:45:11

Vladimir
14.06.2017
16:45:35

Alexander
14.06.2017
16:47:15

Vasiliy
14.06.2017
16:49:29
ну если тип терма определяется тем, в каком регистре он лежит, то, наверное, асм типизированный

Vladimir
14.06.2017
16:50:18
в ассемблере кстати примитивная статическая система типов

Vasiliy
14.06.2017
16:50:27
правда, какой тип у того, что лежит в озу?

Oleg
14.06.2017
16:50:51
давайте совершим мысленный эксперимент
вам дают скрипт на Haskell, который строчка за строчкой загоняется в ghci
такой скрипт будет синтаксически сильно ограниченной версией самого Haskell
вопрос, такой динамический Haskell - он типизированный или нет?

Vasiliy
14.06.2017
16:51:20
каэш, что за вопрос

Oleg
14.06.2017
16:51:45
однако все проверки выполняются в рантайме
фактически - это динамически типизированный язык

eugene
14.06.2017
16:52:12
Они выполняются до запуска, а не вовремя работы

Oleg
14.06.2017
16:52:34
до запуска чего?

? animufag ?
14.06.2017
16:52:41
ну всё. теперь хаскел зашквар(

Oleg
14.06.2017
16:52:43
скрипта? - нет

eugene
14.06.2017
16:52:55
В питоне когда вызывается typecheck? Непосредственно во время выполнения
(я так думаю)

Alexander
14.06.2017
16:53:54
извиняюсь что из перевода, но все же