@haskellru

Страница 298 из 1551
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
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
зачем нужны монады в энергичных динамических языках?

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
зачем нужны монады в энергичных динамических языках?
Никто не знает, зачем монады в престарелых статических языках, поэтому просто будут перечислять рандомные слова из хаскеллевских докладов

Alex
14.06.2017
15:21:18
пошла жара

сравниваем теплое с мягким

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

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
нет типов — нет и тайпклассов
Для тайпклассов нужны не просто типы, нужен импредикативный forall

Oleg
14.06.2017
16:13:11
экзестенциальность?
если опечатка превращает это слово в антоним, то да

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

Oleg
14.06.2017
16:14:50
Нет, forall в конструкторах типов в хаскеле это нелепость. Там должен быть exist
Не соглашусь. В определении конструктора как раз должен быть forall

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
это как в руби рассуждения об интерфейсах.

Тип, который не проверяется статически не значит отсутствующий тип. И динамические типы вполне можно в рантайме отнести (зарегистрировать) к каким-то классам, и использовать это отношение впоследствии

В какой-то ограниченной форме, питоновские метаклассы можно рассматривать в таком ракурсе

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
везде делаются проверки в рантайме..
в ассемблере не делаются

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

В питоне когда вызывается typecheck? Непосредственно во время выполнения

(я так думаю)

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

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