Size: a a a

2021 April 06

VZ

Vlad Zaa in F# Chat
Там на самом деле не все так просто, как хотелось бы. Там полно корнер-кейсов (когда часть сигнатурных файлов сгенерена уже, часть нет например). Иногда непросто взять и сгенерить для солюшна. Особенно автоматически. Мы ща думаем как сделать так, чтобы быстро было по-дефолту. Ковыряем в сторону виртуальной ФС и сервера для компилятора (наподобии того, что рослин юзает).
источник

I

IdiocyAcceptance in F# Chat
Да я и не утверждал что это просто) Скорее хотелка наверное. Типа когда правишь баг в большой кодовй базе и знаешь что сигнатуры в общем и целом не поменяются. Включил галку, сбилдил и меняешь крайне быстро. А то тайпчек может класть IDE на ощутимое время (у нас большой проект).
источник

I

IdiocyAcceptance in F# Chat
В общем, я думаю ты при работе с компилятором тоже самое ощущаешь)
источник

VZ

Vlad Zaa in F# Chat
О да, особенно на ноуте рабочем моем - адок :)
источник

SN

Shub Niggurath in F# Chat
Если их автогенерировать, то весь смысл теряется
источник

E

Elizabeth in F# Chat
Я столкнулся с проблемой в FsCheck, мне надо генерить исключительно стринги с длинной 40 и hex символами, я сделал генератор, добавил его в конфигурацию, но когда запускаю тесты, у меня все равно генерируется пустая строка и на ней падает тест

https://gist.github.com/borseno/d10c45f24210af9db624b505ecea0f0f

Вот код и там есть комменты

Кто знает как пофиксить? мб я что-то упустил
источник

E

Elizabeth in F# Chat
TypeClassComparison = "Overriden: set [Primitive System.String]; New instances: set []"
источник

VA

Vagif Abilov in F# Chat
Смысл чего? Если это помогает увеличить скорость компиляции, то не теряется.
источник

VS

Vasily Shapenko in F# Chat
Попробуй do Arb.register<MyGenerators>()
источник

SN

Shub Niggurath in F# Chat
Теряется в том смысле, что файл сигнатуры - это контракт. В ОКамле ты пишешь файл сигнатуры и отдаешь его клиентам, а реализация от них полностью скрыта. Если мы включим автогенерацию, то контракт будет ломаться каждый раз, когда десятикратным отойдут воды в голову. Это примерно как автогенерация swagger спецификаций
источник

VA

Vagif Abilov in F# Chat
Это я все понимаю, но речь здесь о другом. Контракт мне в данном случае не нужен, мне нужно, чтобы компилятор быстрее работал. И если это достигается генерацией fsi файла, то пусть будет автогенерация.
источник

E

Elizabeth in F# Chat
то же самое
источник

g

gsomix in F# Chat
Наверное, тебе нужно дефолтный генератор перегрузить?
источник

g

gsomix in F# Chat
У атрибута Property есть поле Arbitrary. Посмотри тут:

https://fscheck.github.io/FsCheck//RunningTests.html#Using-FsCheck-Xunit
источник

SN

Shub Niggurath in F# Chat
О каком ускорении идет речь, если количественно?
источник

VA

Vagif Abilov in F# Chat
Судя по всему, о существенном
https://twitter.com/vzarytovskii/status/1379168911141244929
источник

SN

Shub Niggurath in F# Chat
Влад наверное объяснит подробнее, но по тексту выходит, что наличие (а не автогенерация) ускоряет, т.к. для автогенерации код надо распарсить сначала, неужели генерация байткода настолько зависит от сигнатур?
источник

SN

Shub Niggurath in F# Chat
Ну и по моему опыту на проектах ниже какого-то порога наличие сигнатур ускорение компиляции невооружённым глазом незаметно, автогенерация у меня включена около двух лет, ощутимой разницы нет почему-то
источник

SN

Shub Niggurath in F# Chat
Щас померяю LoC
источник

VS

Vasily Shapenko in F# Chat
Ну там же полный проход по типам
источник