169 похожих чатов

Ещё вопрос по F#. В реальных проектах принято указывать возвращаемые и

принимаемые типы функцией или всё «по-наследству»?)

21 ответов

48 просмотров

Вывод типов по Хиндли-Милнеру дает возможность не обмазывать код простынками из деклараций типов, это та одна из уберфич ML семейства языков, почему я обожаю пилить код на фарше

👽
Вывод типов по Хиндли-Милнеру дает возможность не ...

Не пали тему) пусть сишарперы страдают)))

Ivan-Pavlov Автор вопроса
👽
Вывод типов по Хиндли-Милнеру дает возможность не ...

А как ревьюить такой код без ИДЕшки? Ведь вообще не понятно с чем оно работает.

По-разному. Некоторые везде аннотируют, некоторые только публичные функции и методы, некоторые и без этого обходятся.

Ivan Pavlov
А как ревьюить такой код без ИДЕшки? Ведь вообще н...

Дык статический вывод типов, компилятор рога отшибет при ошибке. А типы реально не нужны в декларациях-нужно сосредоточиться на том, ЧТО происходит, а не поверх чего :)

я паблик апи таки обмазываю чтобы не заинфирилось ненужное

Ayrat Hudaygulov
я паблик апи таки обмазываю чтобы не заинфирилось ...

При подходе-функции работы с типом расположены ТОЛЬКО в том же модуле, что и сам тип-сильно уменьшает вероятность упороться. Сам тип в таком случае может только гулять по стеку вызовов и все :))

Ivan Pavlov
Функции без классов?

Я почти всегда леплю на рекордах+функциях вокруг них в том же модуле. За исключением публичных АПИ своего движка-там интерфейсы торчат :) Т.к. когда нибудь может он станет публичным и не хочу шокировать публику F# way API 😂

Ivan-Pavlov Автор вопроса
Ivan Pavlov
А что вы создаёте, если не секрет?

Поищи по ECS, воксель-были посты

Ivan Pavlov
А как ревьюить такой код без ИДЕшки? Ведь вообще н...

если твой код непонятен без аннотаций типов, то это в большинстве случаев плохой код

V S
если твой код непонятен без аннотаций типов, то эт...

В точку. И даже необходимость втыкать явно inref/byref говорит о том, что код плохой, но иначе никак(ибо перформанс)

👽
В точку. И даже необходимость втыкать явно inref/b...

Хватит блин вручную код для компилятора писать:) Определи базовые операции которые ты со своей ecs ’кой выполняешь, попытайся привести к общему типу дженерик делегата который позволяет описать такие взаимодействия, определи несколько комбинаторов которыми их можно чейнить/объединять, а более хайлевел части уже этой dsl описывай:) по всем моими прикидкам ты должен уже давненько не иметь дела с байрефами лично:)

👽
В точку. И даже необходимость втыкать явно inref/b...

Inref/byref?!!! 🤦 у нас например обычная payment система, ну там транзакции денежные и т.д. Среднее время одной транзакции 60ms.

Ilya
Хватит блин вручную код для компилятора писать:) ...

ХМ не выводит byref из контекста использования. Компилятор будет пинать тебя за то, что ты пытаешься его нагреть. Максимум он в override может за тебя сориентироваться, и то на некоторых хитрых ошибках он снова начинает тупить.

Ilya
Хватит блин вручную код для компилятора писать:) ...

А где-то есть открытый источник, из которого ты эту идею взял?

Ilya
Хватит блин вручную код для компилятора писать:) ...

Так это в потрохах ядра ECS всякая перформансная дичь творится, на внешней стороне API все благообразно(типа семпл): [<Sealed>] type private Iterate(_isParallel: bool, _world: IWorld, _settings: IEcsSettings) = interface ISystem<Component1, Component2, Component3> with member this.Description = "Sample three components" member this.IsParallel = _isParallel member this.IsOn = true member this.Filter = Filter.empty() [<MethodImpl(MethodImplOptions.AggressiveInlining)>] member this.Do(_, c1, c2, c3) = c1.Value1 <- c1.Value1 + c2.Value2 + c3.Value3

Oleksandr Maistrenko
Inref/byref?!!! 🤦 у нас например обычная payment ...

Я с обычными "системами" много лет предпочитаю не встречаться, мне надо превзмогание в разработке, так интереснее 😂

Klei
ХМ не выводит byref из контекста использования. Ко...

Верно, в декларациях никак не провихлять для inref/byref-приходится явно писать, чтобы ХМ рога не отшибал

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта