Vasily
Я просто за то, что руки программистам чем раньше отрубаешь, тем лучше
Vasily
Vasily
Или можно каждому типу простому присвоить номерок
Vasily
В виде байта
Éminence grise
Ну насколько я помню, и скала, и котлин, и раст требуют явного указания типа возвращаемого значения при объявлении функции
Vasily
Ну это как бы не проблема
Ayrat
Гораздо сложнее вопрос - во что это скомпилится 😊. Поскольку int | string в одной сборке должно совпадать со string | int в другой
Если декомпильнуть F# то там каррированные функции возвращают тип FSharpFunc<,>
Можно сделать аналог
FSharpUnion<,>
FSharpUnion<,,>
FSharpUnion<,,,>
...
FSharpUnion<,,,,,,,,,> как с туплом, ограничить вменяемо допустим 10ю вариантами. Если больше - делайте DU
Vasily
Если декомпильнуть F# то там каррированные функции возвращают тип FSharpFunc<,>
Можно сделать аналог
FSharpUnion<,>
FSharpUnion<,,>
FSharpUnion<,,,>
...
FSharpUnion<,,,,,,,,,> как с туплом, ограничить вменяемо допустим 10ю вариантами. Если больше - делайте DU
Не поможет
Éminence grise
Точно не поможет. Я только вариант с динамической генерацией типа вижу. Или править рантайм.
Éminence grise
Что то типа inline, но для типов
Ayrat
Не поможет
переопределить проверку на эквивалентность чтобы экземпляр
FSharpUnion<int, string> говорил что он равен экземпляру FSharpUnion<string,int>
Éminence grise
А это уже совместимостью не пахнет
Vasily
É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# проектах, а учитывая и так малочисленное комьюнити, оно станет ещё меньше
Romɑn
Ayrat
не смог сдержаться.
https://habr.com/company/microsoft/blog/415189/#comment_18859491
Dr. Friedrich
Вангую, что вы там всё ещё с павло16 (или как его) ругаетесь.
Dr. Friedrich
Да, так и оказалось.
Ayrat
Все так.
Анна
мне кажется, что не надо его подкармливать
Vasily
Ахххахаха
Romɑn
Ayrat
Vasily
Следующий этап- просто чтение/запись по определенному адресу
Romɑn
Romɑn
Vasily
Зачем процессор, когда есть плис ?
Ayrat
Да нахер вообще придумали эти ваши численные методы если все можно на пальцах складывать?
Vasily
Одной руки
Vasily
Токаря фрезеровщика
Vasily
Там ,по факту, человек со своим восприятием мира
Ayrat
Агрессивный очень в своём невежестве
Romɑn
Да, пользы сообществу не нес, все нормальные обсуждения сводились к флуду.
Romɑn
Я вообще удивляюсь. Как люди с консервативными взглядами приходят в прогрессивную область - программирование?
Ayrat
Бабло на хайпе срубить
Ayrat
Прям как я
Vasily
Тут легко , когда ты шизонарцисс
Fail
Romɑn
Romɑn
Вот что что. а тс мне казался популярным что ппц
Romɑn
Странный рейтинг
Vasily
Есть три вида лжи...
Dr. Friedrich
Первый компилятор TS был написан на F#!
Vasily
Метрика небось по количеству вопросов про язык
Romɑn
Vasily
Dr. Friedrich
Правда?
Да, этот материал утверждает, что правда: https://hackernoon.com/the-first-typescript-demo-905ea095a70f
Romɑn
Анна
А я наверное что-то глупое спрошу и что-то где-то упустила. А что именно с типами-суммами в 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
А я хотел сказать, что не узнал его