Romɑn
Ayrat
точнее ща
Nikolay
Прогнали создателя чатика
Ayrat
Vasily
Прям хочу что-нить на хопаке написать, но для этого надо взять себя в руки и уволиться для начала
Nikolay
Вот это бы ещё как-нибудь завернуть в билдер!
x
0of2 тогда
Nikolay
Кто у нас тут по билдерам?
Nikolay
@vshapenko ждём
Ayrat
Éminence grise
Напиши ему через job {}
Vasily
Зачем тебе билдеры с хопаком?
Ayrat
аааа
Ayrat
да, я не люблю билдеры, но они конечно есть
Nikolay
Vladislav
Vasily
Vasily
Там они есть
Vasily
Но автор упоролся по кастомным операторам
Vasily
Это тоже своя тема
Ayrat
Ayrat
билдер, так билдер. По мне так первый вариант получше
Ayrat
на тип функции не смотрите, я там стабов накидал выше
Ayrat
они как-то криво отрезолвилсь
Romɑn
gsomix
gsomix
gsomix
Но скорее всего оно тебе не нужно, и остается только SRTP.
Romɑn
О, кстати inline rec невозможен если я правильно понимаю
gsomix
Который страшный как атомная война (но не страшнее, чем операторы в гопаке).
Ayrat
Хз. сртп чот совсем плохой.
gsomix
Ayrat
Я не умею
gsomix
Nikolay
Nikolay
А потом придёт Сайм
Nikolay
И скажет
Nikolay
few days of work
Ayrat
Да, способ верный. Знать бы что чинить. Их по-моему надо не латать а вообще чот другое делать
Ayrat
текущий синтаксис делали инопланетяне
gsomix
few days of work
Все потому, что вы сначала что-то делать начали, а потом выяснили, что нужно было сделать.
gsomix
gsomix
Нужно починить синтаксис, починить резолв методов и операторов расширения.
Nikolay
Ayrat
let inline isAbsoluteProductGreaterThanSum'< ^a, ^b, ^c
when (^a or ^b): (static member (+): ^a * ^b -> ^c)
and (^a or ^b): (static member (*): ^a * ^b -> ^c)
and ^c : (static member Abs: ^c -> ^c)
and ^c : comparison>
a b =
let productOfAb = ((^a or ^b): (static member (*): ^a * ^b -> ^c) (a, b))
let sumOfAb = ((^a or ^b): (static member (+): ^a * ^b -> ^c) (a, b))
abs (productOfAb) > sumOfAb
так НЕ должно быть
gsomix
gsomix
И абуз фичи.
Ayrat
синтаксис говно. напоминает скалу в её худших проявлениях
Ayrat
или новые генерики в го
gsomix
Почини!
gsomix
Ayrat
это пример как сделать через сртп простую вещь
let inline isAbsoluteProductGreaterThanSum a b =
abs(a * b) > (a + b)
Ayrat
компилятор может сам проссать все аннотации, да
gsomix
Ayrat
да он сам может только простые вещи делать
Ayrat
чот сложное и надо ручками хуярить сртп с синтаксисом выше
gsomix
Ayrat
юз кейс для сртп отличный - утиная типизация в статике
Ayrat
но синтакси такой вымораживающий
gsomix
Просто сложные штуки с SRTP нужно выжигать как и кастомные операторы.
Ayrat
да, поэтому и не пользуюсь
Ayrat
но операторы люблю ( /me гладит оператор *<+->= )
gsomix
На самом деле почти все продвинутые фичи в F# нужно чинить.
Ayrat
да не будут их чинить, забей
там боязнь у команды как бы чо не сломать в совместимости (мы ж ентерпрайз язык, а не хипстота какая)
и постоянная оглядка как чо делают в C# чтобы на их решения ориентироваться
gsomix
gsomix
В F#5
Ayrat
Ну это как HalfLife 3
Ayrat
он обязательно будет
Ayrat
но потом
gsomix
Нет, конечно.
gsomix
RFC уже есть, Сайм о своих планах, кажется, четко писал.
Vladislav
Почини!
вроде ж чинит чувак
Vladislav
чтоб интерфейсы и красиво
gsomix
Кто-то чинит синтаксис, кто-то резолв.
Ayrat
gsomix
- https://github.com/fsharp/fslang-design/blob/master/RFCs/FS-1024-simplify-call-syntax-for-statically-resolved-member-constraints.md
- https://github.com/fsharp/fslang-design/blob/master/RFCs/FS-1043-extension-members-for-operators-and-srtp-constraints.md
gsomix
Второй, конечно, прекрасен.