Vladislav
Это не предел мечтаний, можно и другие системы анализа придумать, но как их реализовывать толком неясно
Vladislav
А все что динамическое, это не типы в принципе
Vladislav
Советую прочитать секцию 1.1 в "Types and Programming Languages" Пирса
Vladislav
Если честно, вынести б эту главу на какую-нибудь веб-страницу и кидать ссылку каждый раз, когда начинается ко-ко-ко про то, что динамические типы это не оксюморон
A64m
тут и так накидали уже, на двух языках
Alexander
Эти хаскеллисты такие снобы. Не дают другим причаститься к лагерю ФПшников, динамические ЯП не считают за ЯП, и говорят, что там типов нет...
Aliester
есть там типы
Aliester
точнее тип
Aliester
😜
A64m
поскольку сейчас ФП-фичи той или иной степени костыльности во всех языках - определять принадлежность как ФЯ по минимуму - это значит все языки как ФЯ определить
Alexander
Или со скалистами, которые пишут на Скале как на Джаве, но из-за самого факта использования Скалы считают себя функциональщиками?
A64m
эрлангистов скоро не будет - не будет и проблемы
A64m
Alexander
В то же время, когда JS-разработчики, композируя функции, даже не догадываются, что делают ФП?
🌞Sunny
Aliester
Андрей
😀
Андрей
ты начал делать call/cc в js?
Aliester
начал делать частичные функции, нормально использовать трамплины и рекурсию где можно
Aliester
и стараюсь писать функции без стейта через мапы и функторы
A64m
вы продолжаете настаивать на том, что типы якобы означают обязательно какие-то интересные гарантии, хотя сами же приводили пример плюсов где типы есть а с гарантиями все не особо хорошо
A64m
потому что хаскель это язык с удобствами для написания обобщенного кода с минимальной безопасностью для того чтоб это все не разваливалось
A64m
не пруфассистант. все эти потуги в сторону "тотальности" в хаскеле - это как ФП на C++
Alexander
Мы же уже выяснили, что эта картинка не может свидетельствовать о снижении абсолютного количества разработчиков/проектов?
A64m
да, но это не важно
Alexander
да, но это не важно
Ну, вообще есть Прокопов, который отказался от Эрланга в пользу Кложи, хотя и неизвестно, это разовый случай или тенденция.
Alexander
A64m
кложа на графике падает быстрее эрланга
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
A64m
ну да, можно не давать программисту доступ к мутабельным ссылкам, например, и прочие похожие ограничения ввести, но это не для языка общего назначения, конечно
A64m
т.е. типы и "гарантии" совсем не одно и то же. типы в статике для генерации кода, а гарантии - это как повезет (чаще всего никак не повезет)
Vladislav
Только она не про типы
A64m
с другой стороны, как верно подметил тот же пирс - особо интересных "гарантий" для того чтоб от них польза была и не надо
Vladislav
Проверки в рантайме это assertions
Vladislav
И их можно писать в тридцать раз более интересные, чем Int /= Bool
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
Проверки в рантайме это assertions
Я сейчас спрошу и что же они проверяют, а мне ответят, что теги, а не типы, и всё начнётся заново и мне будут пытаться объяснить, что две сущности предназначенные для одного и того же, основанные на одном и том же, одинаковые на вид и крякающие одним голосом совершенно разные ибо у них разная реализация и обобщать их до одного понятия ни в коем случае нельзя.
Vladislav
И вот мой взгляд на проблему "динамического ФП"
ФП - это парадигма, где функции (в правильном, математическом определении функции) это first-class values. При должном желании, писать в ФП-стиле можно на любом языке с подпрограммами, потому что избегать сайд-эффектов никто не запрещает.
Но называться ФП-языком может только язык, который активно способствует такому стилю, т.е. статически запрещает сайд-эффекты
Alexander
Alexander
> то две сущности предназначенные для одного и того же, основанные на одном и том же, одинаковые на вид и крякающие одним голосом совершенно разные
Они могут быть эквивалентными в каком-либо смысле, но они разные.
Vladislav
> что две сущности предназначенные для одного и того же, основанные на одном и том же, одинаковые на вид и крякающие одним голосом совершенно разные
Их фундаментальное различие в том, проверяются ли они до или после запуска программы
Vladislav
Я не знаю как можно просто закрыть глаза на это колоссальное различие и свалить две фундаментально разные вещи в одну кучу из-за поверхностной схожести
A64m
Vladislav
Ну да, возьмем хотя бы тот факт, что рантайм-тегами могут служить только монотипы
Vladislav
А статические типы без полиморфизма это хуже, чем отсутствие типов
Vladislav
> эквивалентно принадлежности значения допустимому типу
Ну во-первых не эквивалентно, а похоже в первом приближении
A64m
одни чтоб не выполнялась до конца - как ассерты, а другие чтоб не компилировалась, и еще для других целей для генерации кода например
A64m
но пересечение по функциональности притянуть можно - только вот с ассертами у "динамических" "типов" пересечение получше
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
Vladislav
Vladislav
понятия множества и типа разные
Vladislav
Секция 1.1, "Type theory versus set theory"
Vladislav
Если что, то это общие соображения и они не про HoTT, это по сути кусок предисловия скорее
A64m
типы классифицируют термы, а не значения, как процитировано выше из пирса - это синтаксическое явление, какие там значения-то?
A64m
я уж не говорю, что тайпчек различает вообще не населенные типы
Vladislav
Alexander
Спасибо, я стараюсь 😊
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
A64m
ну да, можно так сказать
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
Интересно. Получается в динамических языках проверяются теги, в статических тоже проверяются теги, но в другой момент времени и это СОВЕРШЕННО разные теги, а ещё одни можно называть типами, а другие нет.
A64m
да, именно так
A64m
проверяются разные вещи, в разное время - видите, все разное
𝙱𝚎𝚒𝚉𝚎𝚛𝚘
В общем я всё понял: спасибо. Это абсолютно одинаковые понятия.
Alexander
я слышал выражения, как об стену горох, биссер перед свиньями и гляжу в книгу вижу фигу
Alexander
и думаю какое бы выбрать
Alexander
вроде 1 лучше всего?
Alexander
более того синтаксис яп, и инструкции процессора и инструкции байткод процессора это одно и тоже
Vladislav
Господи, ну как с людьми разговаривать, попробую как с тупыми тогда
Есть три буквы, Т И П. Мы какие-то явления называем этими тремя буквами, а какие-то не называем. Похожи они или нет.
Вот приду я к биологу, он мне покажет, мол, вот это К О Ш К А, а вот это С О Б А К А. А я ему начну: посмотри, придурок, это же одно и то же. Четыре лапы, шершавый язык, ушки, и звуки издает.
На меня посмотрят как на дебила, возможно, не поняв, какой deep connection я сделал.
Alexander
Ну что вы такие нетолерантные к чужому мнению
Vladislav
И вот у слова Т И П в computer science тоже есть класс явлений, которые им называются, и те, которые им не называются. Даже если похожи. Если в рантайме — всё, не тип
Alexander
потому что нас люди читают
Ilya
три матёрых хаскеллиста доминируют над джаваскриптером, спешите видеть