Hog
знаю, что медленнее, но у меня не хайлоад :)
Aleksandr
Сейчас выглядит как объявление, смешанное с инициализацией в одном
Ayrat
меня до сих пор бесит что в C# при учёте наличия var постоянно нужна эта еботня вместо var func = x => x + 1; надо писать Func<int,int> func = x => x + 1;
Aleksandr
То есть без вот этого '='
Ayrat
какого хуя?
Hog
какого хуя?
ну, вот а локальных фциях это не надо
Ayrat
т.е. там var в принципе воткнуть нельзя
Ayrat
и let!
i see what you did there!
Aleksandr
что не так то? все как в фарше
В F# функции по сути значения и есть
Aleksandr
Все как положено - let на месте и (=) на месте
Aleksandr
Поэтому это не выглядит из ряда вон
Aleksandr
А к локальным функциям в C# никак привыкнуть не могу. Еще с локальными функциями постоянно кажется, что я на одну вложенность выше нахожусь
Pavel
локальные функции можно использовать рекурсивно
Pavel
чем заменить предлагаешь?
Ivan
Давай )
https://gist.github.com/dohly/ece17c8c3ea20c9d6bd3c51f9f1f11c7
Roman
какого хуя?
а вдруг ты экспрешн имел ввиду?
Ayrat
а вдруг ты экспрешн имел ввиду?
Вот она, ебля с имплиситными кастами
Roman
А поскольку сишарп состоит из неявного приведения типов чуть более чем на половину, хуйцов вместо "понять исходя из использования"
Roman
опередил)
Aleksandr
локальные функции можно использовать рекурсивно
А вот это важное замечание. ДеYствительно
Hog
А вот это важное замечание. ДеYствительно
потому что они компилятся в приватные методы с хитрыми именами (но это не точно :))
Vasiliy
https://gist.github.com/dohly/ece17c8c3ea20c9d6bd3c51f9f1f11c7
Ухххх, попробую такую наркоманию)
Ivan
ну там экстеншны можно поудалять все если не надо
Ivan
Ухххх, попробую такую наркоманию)
вот еще один велосипед https://gist.github.com/dohly/62cba58c8cff0b8c584e52cd5e31dc9a
Ayrat
Что только люди не делают чтобы на F# не писать
Roman
Что только люди не делают чтобы на F# не писать
Неудивительно. На нем пару строчек написал, и все веселье кончилось, даже развернуться негде. А тут вон какая красота, пиши не хочу
Ayrat
А в чём смысл этого каста? public static implicit operator Option<T>(Option op) => new Option<T>(null);
Ayrat
приводить недженерик опшн в дженерик?
Ayrat
ааа, Option который недженерик всегда None
Ayrat
Мб void?
сложно, сложно. Я чот давно в C# код не втыкал
Ayrat
там надо ещё сделать private Option() {} иначе можно сделать var opt = new Option();
Ayrat
и хз что это
Ayrat
а вообще его надо сделать static
Ayrat
весь Option класс
Ivan
ну да, кстати
Vasily
Наркоманы грёбаные
Shub
F# reminds me of Dart they are kind of dead. some people will point out various signs of life for each one. but still you can kind of see they are not super serious/critical. I get the vibe that they are being kept alive because Microsoft/Google don't want to piss off and lose the brilliant people working on them. so they are like "there there .. you good engineers keep yourselves busy with your stuff ... let us know if you need anything ... thank you ... we'll leave you guys to it".
Shub
https://www.reddit.com/r/fsharp/comments/91gg6j/is_microsoft_serious_about_f/
Ayrat
ты читаешь реддит 7ми месячной давности?
Shub
новых страданий пока не завезли, перечитываю старые
Ayrat
Я сегодня нагенерил несколько сотен тестов одним махом с помощью компилятора. Ещё чуть чуть и код ген рядом. Вкратце. Грабим AST из файла, выцепляем все Type Declarations, отбираем те, у которых объявлены и static member ToJson и static member FromJson и собсно генерим для них говнотесты. https://gist.github.com/Szer/eb034950b4c70146aef7f21328c8b30e Пара патернов туда-сюда и получается так |> List.filter (function | IsStatic & MemberName "FromJson" | IsStatic & MemberName "ToJson" -> true | _ -> false) думаю написать кодогенератор промышленный, с такими объёмами говнокода руками не справиться
Hog
какие милые тупели
Ayrat
какие милые тупели
Там не все так страшно если разобраться
Hog
я верю :) если там тебе один элемент в середине всего-то и нужен
Hog
а я, вот, тренировался вчера https://gist.github.com/grishace/f6224429a3781e93165bc0c9aa0ee7f0
Hog
если у меня ком завёлся тока через рефлекшон - думаю вот таких вот лямбд накомпилить заместо. должно же сработать?
Ayrat
стаковерфлоу так делал
Ayrat
они вместо рефлекшна в рантайме лямбды собирали и компилили на ходу
Ayrat
сказали что были удивлены скоростью
Hog
я спецом бенчмарк нарисовал
Hog
тоже был удивлён :)
Ayrat
Ну да, эт тема быстрая. И гораздо проще чем рефлексия
Hog
ну смотря для чего проще :) кодить - нет :)
Hog
для консюмера - да
Vasily
Скомпиленная лямбда однозначно быстрее рефлексии
Ayrat
мне кажется проще собирать выражения в рантайме чем не обосраться с правильным созданием типов и прочего говна
Ayrat
там куда ни шагни будут какие-нибудь страсти типа TypeActivationException
Hog
Скомпиленная лямбда однозначно быстрее рефлексии
она такая же по скорости как и вызов метода напрямую
Ayrat
ну потому что она точно так же вызывается напрямую
Ayrat
ты ж её скомилил
Hog
буду вечером пробовать :) о результатах доложу
Hog
F#-версия будет называться Fart!
Igor
Объективно, Dart - нах не нужен сам по себе. А C# посасывает у F# как язык
Igor
Igor
Мемас (+_) на тему (про Flutter и Dart)
Igor
Меня просто тошнило от Dart, когда я писал под Flutter
Андрей
F#-версия будет называться Fart!
надо серьезно запилить такой проект к 1му апреля 🙂
Igor
Для важных переговоров 😎
Ayrat
я чот туплю, в булевой алгебре как внести знак отрицания внутрь дизюнкции и сохранить её? есть такое !(A | B) надо чтобы стало C | D
Hog
ну это ж !A && !B
Ayrat
эт понятно