Фил Ранжин
ну вот у меня на собесе тоже был "чел с похожими интересами". Сразу убил вопросом, что бы я добавил в F# из хаскеля
Vasiliy
лол.
Vasiliy
А если не знаешь хаскеля? или это что то про высшие типы или как они звучили?
x
x
сказал я, который не написал ни одной осмысленной строчки на f#
Фил Ранжин
ты же понимаешь, что я не изучал хаскель
Фил Ранжин
как бы вопрос сразу не в кассу
Pavel
Фил Ранжин
я про типы затёр
Фил Ранжин
но я хз, что там с типами в хаскеле. Знаю, что в тс есть кондишнл тайпс и маппед тайпс
Фил Ранжин
и вот про них сказал, ему зашло
Анна
Тайп классов не хватает, да
Крылатый
Доброе утро, фшарпята!
Фил Ранжин
а что за тайпклассы?
Анна
у меня тоже про тайпклассы спросили, хотя я на хаскеле не больше 10 строк написала в жизни
Dmitry
Vladislav
Vladislav
нопы
Ayrat
Ayrat
надо PR заслать наверное
Ayrat
фикс там охуенный - минус 2 строчки
Фил Ранжин
эй, гении
Фил Ранжин
а что за тайпклассы?
Pavel
это ты типа перекличку объявил?
Pavel
трейты это такие
Bonart
Bonart
В сишарпе и эфшарпе такая функциональность поддержвается только для нескольких ad-hoc "классов типов". Например, foreaach, LINQ, CE
Vladislav
Bonart
Disposable
TaskLike и т.п. Свое произвольное не определить
Bonart
В хаскеле и расте классы типов полноценные
Bonart
Их можно представить, как интерфейсы, отвязанные от конкретных типов по умолчанию. Программист может связать классы типов со своими типами, причем не обязательно 1:1
Ayrat
Вот было бы круто делать так:
Ayrat
Но ашипка
All implemented interfaces should be declared on the initial declaration of the type
Vasiliy
Ayrat
вот можно было бы делать как на скрине выше - считай что тайп классы (в лице интерфейсов) появились
Vasiliy
ооооо_О
Ayrat
ооооо_О
а шо? интерфейсы и абстрактные классы (с дефолтной имплементацией) это считай почти тайп классы. Если бы их можно было докидывать типу)
Ayrat
есть у тебя несравниваемый тип, а ты херак-херак и докинул ему IEquatable<T>
Ayrat
и всё, сравниваемый резко стал
Ayrat
или IComparable я уж забыл как он там
Фил Ранжин
Vasiliy
ok
Bonart
Самое няшное, что класс типов модет быть определен в одном месте, типы в другом, а связь между ними - в третьем
Bonart
Т.е. можно вязать между собой типы и классы типов, которые сами по себе вообще друг о друге не знают
Ayrat
Vladislav
Bonart
Dr. Friedrich
Про clojure и reason.
Они не нормально компилируются в JS.
Dr. Friedrich
Нормально компилируется только тот, кто может бесшовно использовать JS в своих программах
Dr. Friedrich
А если надо писать свою обвязку — то это ненормально
Bonart
Dr. Friedrich
Ну и там дальше по степеням ненормальности можно разложить
Dr. Friedrich
В TS всё сделано максимально человечно, в частности
Vladislav
с блазором конечно я разочаровался
Dr. Friedrich
На крайняк можно обмазать внешнюю либу через any и юзать как есть.
Dr. Friedrich
Dr. Friedrich
Ну там надо было писать что-то вроде (js "my-js-code"), не?
Dr. Friedrich
Это совсем-совсем не как с Java.
Ayrat
Dr. Friedrich
サイトー
плюс пофайловая компиляция (как раньше в тс) дает очень удобный способ понимать а как оно собственно протранспилилось (и это можно читать!)
Dr. Friedrich
Постановляю, в clojurescript нормально сделан интероп.
Vladislav
а чо там?
да интероп это боль сплошная, если нужна либа - пиши обвязку
Dr. Friedrich
Vladislav
проще жс фреймворк взять
Dr. Friedrich
Dr. Friedrich
Например, я могу хотеть расширить JS-объект (!) своим классом
Dr. Friedrich
Если для этого надо приседать — то не годится