Vasily
Я просто за то, что руки программистам чем раньше отрубаешь, тем лучше
Vasily
Или можно каждому типу простому присвоить номерок
Vasily
В виде байта
Éminence grise
Ну насколько я помню, и скала, и котлин, и раст требуют явного указания типа возвращаемого значения при объявлении функции
Vasily
Ну это как бы не проблема
Ayrat
Гораздо сложнее вопрос - во что это скомпилится 😊. Поскольку int | string в одной сборке должно совпадать со string | int в другой
Если декомпильнуть F# то там каррированные функции возвращают тип FSharpFunc<,> Можно сделать аналог FSharpUnion<,> FSharpUnion<,,> FSharpUnion<,,,> ... FSharpUnion<,,,,,,,,,> как с туплом, ограничить вменяемо допустим 10ю вариантами. Если больше - делайте DU
Éminence grise
Точно не поможет. Я только вариант с динамической генерацией типа вижу. Или править рантайм.
Éminence grise
Что то типа inline, но для типов
Ayrat
Не поможет
переопределить проверку на эквивалентность чтобы экземпляр FSharpUnion<int, string> говорил что он равен экземпляру FSharpUnion<string,int>
Éminence grise
А это уже совместимостью не пахнет
Éminence grise
Экземляр - да сколько угодно. Надо чтобы типы были эквивалентны. То есть сигнатурно совпадали при вызовах.
Éminence grise
Без рантайма - никак, только через object - а это простите, уже js
Ayrat
Я ж грю, это уже про сравнение сетов типов
Не совсем. По математике элемент множества int|string принадлежит множеству int|string|bool, поэтому в теории типов экземпляр типа int|string должен валидно приниматься в функцию которая ожидает int|string|bool
Vasily
Это понятно
Vasily
Теперь перейдем в реальный мир
Éminence grise
Угу, вот рантайму это не объяснишь
Ayrat
Это уже Set.isSubsetOf
Vasily
Тут как с дифурами
Ayrat
кстати как-то так эта фукнция в F# и называется
Vasily
Только численные методы, только хардкор
Éminence grise
Да бросьте вы. Все компиляторы и так внутри все это делают в том или ином виде. Никакой особой сложности в арифметике нет. Не в анализ компилятора упрется, а еще раз повторю, в рантайм. Не даст он смоделировать соответсвующие типы сейчас. А рантайм у нас менять не любят ой как.
Ayrat
с TypeErasure можно сделать, обмазав атрибутами и сделав это F#-only фичей
Éminence grise
Я и сказал - это уже js. Мало того, еще и беспощадно боксящий.
Ayrat
но я лично против таких решений. Это не позволит использовать код F# в C# проектах, а учитывая и так малочисленное комьюнити, оно станет ещё меньше
Ayrat
А для 8 типов в union это сколько надо генерировать операций проверки?
Я честно говоря не знаю как это грамотно сделать в рантайме без поддержки со стороны рантайма)))
Ayrat
не смог сдержаться. https://habr.com/company/microsoft/blog/415189/#comment_18859491
Dr. Friedrich
Вангую, что вы там всё ещё с павло16 (или как его) ругаетесь.
Dr. Friedrich
Да, так и оказалось.
Ayrat
Все так.
Анна
мне кажется, что не надо его подкармливать
Romɑn
не смог сдержаться. https://habr.com/company/microsoft/blog/415189/#comment_18859491
Но ведь куча это и есть структура данных. Выбрать структуру данных map для кучи. Что?
Vasily
Ахххахаха
Romɑn
не смог сдержаться. https://habr.com/company/microsoft/blog/415189/#comment_18859491
А как мержить "кучу на мапах" с "кучей на деревьях"?
Vasily
Следующий этап- просто чтение/запись по определенному адресу
Vasily
Зачем процессор, когда есть плис ?
Ayrat
Да нахер вообще придумали эти ваши численные методы если все можно на пальцах складывать?
Vasily
Одной руки
Vasily
Токаря фрезеровщика
Vasily
Там ,по факту, человек со своим восприятием мира
Ayrat
Агрессивный очень в своём невежестве
Romɑn
Да, пользы сообществу не нес, все нормальные обсуждения сводились к флуду.
Romɑn
Я вообще удивляюсь. Как люди с консервативными взглядами приходят в прогрессивную область - программирование?
Ayrat
Бабло на хайпе срубить
Ayrat
Прям как я
Vasily
Тут легко , когда ты шизонарцисс
Romɑn
Romɑn
Вот что что. а тс мне казался популярным что ппц
Romɑn
Странный рейтинг
Vasily
Есть три вида лжи...
Dr. Friedrich
Первый компилятор TS был написан на F#!
Vasily
Метрика небось по количеству вопросов про язык
Vasily
Первый компилятор TS был написан на F#!
Потом на Раст переписали?
Dr. Friedrich
Правда?
Да, этот материал утверждает, что правда: https://hackernoon.com/the-first-typescript-demo-905ea095a70f
Анна
А я наверное что-то глупое спрошу и что-то где-то упустила. А что именно с типами-суммами в F# не так?
Romɑn
То что они не объединенные типы
Анна
Romɑn
type MyIntBool = Int of int | Bool of bool type YourIntBool = Int of int | Bool of bool MyIntBool.Int 3 = YourIntBool.Int 3 //false
Romɑn
И let f (a:MyIntBool) = ... f (YourIntBool.Bool false) // compile error
Анна
А по науке надо, что если это сумма int и bool, то неважно, как мы её назвали?
Анна
Romɑn
Ага
Romɑn
Если это объединение, а не размещенное объединение
Анна
но размеченное объединение - это же тоже разновидность типа-суммы?
gsomix
https://youtu.be/cO9UGtQbyOY?t=304
gsomix
Первые несколько минут без звука.
gsomix
А еще я смешно подпрыгиваю во время доклада.
gsomix
gsomix
Привет. :)
Igor
Igor
А я хотел сказать, что не узнал его