Vasiliy
они просто есть
Зигохистоморфный
для удобной агрегации
Зигохистоморфный
это же абстракция
Влод
Ну например можно написать функцию sequence один раз вместо того чтобы для каждой монады (апликатив) отдельно
Влод
Ну это для затравки диалога вброс. Так то мне тоже не очевидно есть ли профит
Зигохистоморфный
я повторюсь - абстракция (унифицировать что-то похожее к одному стилю и не задумываться о реализации)
Oleg
зачем нужны монады в энергичных динамических языках?
Никто не знает, зачем монады в престарелых статических языках, поэтому просто будут перечислять рандомные слова из хаскеллевских докладов
Aλeχ
пошла жара
Aλeχ
сравниваем теплое с мягким
Влод
для инкапсуляции эффектов
вот это вот нормальный ответ? наверное стоит всё таки действительно сменить вопрос на "зачем тайпклассы (например моноиды или функторы) в динамических языках"
Anonymous
нет типов — нет и тайпклассов
Anonymous
это как в руби рассуждения об интерфейсах.
Влод
ок можешь не продолжать
Влод
я тебя понял
Anonymous
то есть интерфейс у объекта конечно же есть
Anonymous
но чисто на уровне идеи
Влод
сейчас найдёшь ещё одну классную аналогию
Anonymous
на уровне рассуждений об объекте
Влод
вот на уровне идеи как назвать эти тайпклассы
Влод
вот эти функторы
Anonymous
в джаве вот интерфейсы есть в самом языке, но это опять же из-за наличия системы типов
Зигохистоморфный
ну грубо можно считать тайпклассы как трейты в скале
Влод
блабла нет типов нет и трейтов
Oleg
чисто формально, динамическая типизация /= утиная типизация
Oleg
но кого это волнует
Евгений
нет типов — нет и тайпклассов
Для тайпклассов нужны не просто типы, нужен импредикативный forall
Oleg
экзестенциальность?
если опечатка превращает это слово в антоним, то да
Евгений
экзестенциальность?
Нет, forall в конструкторах типов в хаскеле это нелепость. Там должен быть exist
Oleg
Нет, forall в конструкторах типов в хаскеле это нелепость. Там должен быть exist
Не соглашусь. В определении конструктора как раз должен быть forall
Alexander
data Foo = exit x . Foo x data Foo = Foo (forall x. x) (/thread)
Alexander
*exists
Влод
чисто формально, динамическая типизация /= утиная типизация
можно развернуть мысль? то есть я не вижу связи этого предложения и диалога.
Oleg
нет типов — нет и тайпклассов
Oleg
это как в руби рассуждения об интерфейсах.
Oleg
Тип, который не проверяется статически не значит отсутствующий тип. И динамические типы вполне можно в рантайме отнести (зарегистрировать) к каким-то классам, и использовать это отношение впоследствии
Oleg
В какой-то ограниченной форме, питоновские метаклассы можно рассматривать в таком ракурсе
Oleg
покажи пример на динамическом языке
ну кложуровские протоколы - слабый аналог класса типов
Oleg
https://clojure.org/reference/protocols
Alexander
можно ссылку на определение типа?
Alexander
т.к. теги используемые в динамических языках, я бы типами не называл
Alexander
насколько я помню в Пирсе под определение они тоже не попадают
Oleg
насколько я помню в Пирсе под определение они тоже не попадают
Цитата из Пирса 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
Oleg
either at compile time or at run-time
Oleg
в кложурке несомненно делаются проверки в рантайме
Alexander
везде делаются проверки в рантайме..
Alexander
ну где не в компайл тайме
Oleg
не везде делаются проверки на консистентность формы
Oleg
иногда проверка есть только на факт наличия содержимого
Oleg
в кложуре ты можешь потребовать реализацию протокола от динамического типа
Oleg
Мне кажется, адепты typed racket ещё больше рассказали бы нам
Anonymous
в кложурке несомненно делаются проверки в рантайме
удобные штучки в динамических языках для проверок в рантайме это просто такая форма дефенсив программинга, к теме тайпклассов слабо имеет отношение, хотя внешне похоже
Vasiliy
везде делаются проверки в рантайме..
в ассемблере не делаются
Alexander
в ассемблере не делаются
в асемблере уже одинаковые регистры для целочисленного и плавучки?
Vasiliy
ну если тип терма определяется тем, в каком регистре он лежит, то, наверное, асм типизированный
Anonymous
в ассемблере кстати примитивная статическая система типов
Vasiliy
правда, какой тип у того, что лежит в озу?
Oleg
давайте совершим мысленный эксперимент вам дают скрипт на Haskell, который строчка за строчкой загоняется в ghci такой скрипт будет синтаксически сильно ограниченной версией самого Haskell вопрос, такой динамический Haskell - он типизированный или нет?
Vasiliy
каэш, что за вопрос
Oleg
однако все проверки выполняются в рантайме
Oleg
фактически - это динамически типизированный язык
Anonymous
Они выполняются до запуска, а не вовремя работы
Oleg
до запуска чего?
Влод
ну всё. теперь хаскел зашквар(
Oleg
скрипта? - нет
Anonymous
до запуска чего?
Стейтментов. Дерево строится и вызывается typecheck
Anonymous
В питоне когда вызывается typecheck? Непосредственно во время выполнения
Anonymous
(я так думаю)
Alexander
извиняюсь что из перевода, но все же
Oleg
нет неявной проверки типов