История изменений
Исправление quasimoto, (текущая версия) :
Это отменяет тот факт что компилируется код, который я до этого дал?
Он не компилируется, он вообще пропускается, до инстанцирования, то есть auto z = yoba((SomeModel)x, y) — инстанцируется для SomeModel и если у неё есть operator+, то всё работает (SomeGoodModel), иначе не компилируется (SomeBadModel). Концепт фиксирует интерфейс — более правильный чек получится.
А вообще в чём проблема с таким кодом? Это же как yoba :: IsAbelianSemiGroup t => t -> t -> t; yoba = (+).
Да нету там блять термов
В настоящих зависимых типах — есть. В негодных «зависимые типы без термов, так как я всё в омегу с подтипированием могу загнать, пох веники» — ну ок, что там редуцируется, name it. Я называю constexpr.
Факт в том, что эта запись должна работать.
Если в C++ вместо let будет constexpr, будет работать. Иначе — в C++ не будет, в Agda будет, мне интересно что будет в ATS.
Исходная версия quasimoto, :
Это отменяет тот факт что компилируется код, который я до этого дал?
Он не компилируется, он вообще пропускается, до инстанцирования, то есть auto z = yoba((SomeModel)x, y) — инстанцируется для SomeModel и если у неё есть operator+, то всё работает (SomeGoodModel), иначе не компилируется (SomeBadModel). Концепт фиксирует интерфейс — более правильный чек получится.
А вообще в чём проблема с таким кодом? Это же как yoba :: IsAbelianSemiGroup t => t -> t -> t; yoba = (+).
Да нету там блять термов
В настоящих зависимых типах — есть. В негодных «зависимые типы без термов, так как я всё в омегу с подтипированием могу загнать, пох веники» — ну ок, что там редуцируется, name it. Я называю constexpr.
Факт в том, что эта запись должна работать.
Ты же let написал — он иммутабельный, в C++ будет constexpr, будет работать. Вот если var — в C++ не будет, в Agda будет, мне интересно что будет в ATS.