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

Можно как-то заставить это работать без врапера вокруг функции? https://pastebin.com/2mgMAZsw

41 ответов

23 просмотра

Эти 6 строк можно было и так прислать..

Это точно either должно называться? Не Both?

В общем, мой личный мозг переполнился вследствии бесконечной рекурсии...

Aleksei Korolev
either

Можешь объяснить, что же ты хочешь, семантически, потому что, чтобы понять рекурсию, нужно понять рекурсию.

Aleksei-Korolev Автор вопроса
Ilya Zviagin
Можешь объяснить, что же ты хочешь, семантически, ...

функция может вернуть либо результат, либо функцию, которую можно использовать для того, чтобы в конце концов получить результат. https://pastebin.com/YwR3LFfe

Aleksei Korolev
функция может вернуть либо результат, либо функцию...

Но функция не может вернуть то или это. Только одно

Aleksei-Korolev Автор вопроса
Ilya Zviagin
Но функция не может вернуть то или это. Только одн...

в примере упрощенный api для either показан

Aleksei-Korolev Автор вопроса
Алиса Кассель-Королёва
посмотри std::variant

старый стандарт + проблема не в этом

Aleksei Korolev
функция может вернуть либо результат, либо функцию...

Наверное, это можно сделать за счёт folding of variadic templates of function

Aleksei-Korolev Автор вопроса
Ilya Zviagin
Не, ему нужны разные типы

не, вариант подходит, как замена either. но проблему с рекурсией не решает

Aleksei Korolev
в примере упрощенный api для either показан

Функция должна возвращать что-то определенное, не "одно или другое"

Aleksei Korolev
не, вариант подходит, как замена either. но пробле...

Твой то вариант из примера изначального тоже не должен работать.

Aleksei Korolev
не, вариант подходит, как замена either. но пробле...

Вы уверены, что предполагаете принятие решения о типе возвращаемого значения на этапе компиляции?

Aleksei-Korolev Автор вопроса
Sergey Anisimov
Вы уверены, что предполагаете принятие решения о т...

из примера очевино, что нет. решение в рантайме принимается от данных

Ilya Zviagin
Мы же про с++

а человек хочет тип из хаскеля

Aleksei Korolev
вай?

Ты его компилировал? Работает?

Aleksei Korolev
из примера очевино, что нет. решение в рантайме пр...

Тогда очевидно, что это невозможно, поскольку тип - абстракция уровня времени компиляции =)

Aleksei-Korolev Автор вопроса
Ilya Zviagin
Ты его компилировал? Работает?

ну так вопрос был про то КАК это завести без обертки вокруг функции. с оберткой оно заводится без проблем.

Aleksei-Korolev Автор вопроса
Ilya Zviagin
Ну, а это невозможно

что конкретно невозможно?

Aleksei Korolev
что конкретно невозможно?

Вывести тип (compile-time) исходя из данных (runtime). Причинность, увы.

Aleksei-Korolev Автор вопроса
Sergey Anisimov
Вывести тип (compile-time) исходя из данных (runti...

вы код читали? где там нужно выводить тип из данных? решение о нужно типе из имеющихся вариантов налдо принять в рантайме

Aleksei Korolev
что конкретно невозможно?

У функции должен быть определенный тип возврата, и он должен быть определен до этой функции. Вот лямбда - другое дело...

Алиса Кассель-Королёва
а, вот оно что

то есть проблема в том, что тип рекурсивный получается?

Aleksei-Korolev Автор вопроса
Aleksei-Korolev Автор вопроса
Ilya Zviagin
Я в общем подумаю ...

https://godbolt.org/z/h8x5593zr вот вариант с оберткой

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта