История изменений
Исправление red75prim, (текущая версия) :
Автоматическая коэрсия туплов (a, (b, c)) -> (a, b, c)
Опять неправильно. Про автоматическую коэрсию я нигде не говорил. Для работы с гетерегенными списками в расте сейчас приходится записывать их как (a, (b, (c, ()))). Другое представление использовать, не (a, b, c), а (a, (b, (c, ()))). Это не коэрсия. Это другой способ записи. И правильно сконвертировать список вы так и не смогли.
ABI для того, чтобы все это дерьмо работало
Про ABI я написал в ответ на ваше «Здесь у нас не haskell». Ну вот я и решил, что вероятно вам не нравится что у функций f(a, b, c) и f((a, (b, (c, ())))) могут быть разные ABI. Поэтому я указал, что для их реализации можно использовать одинаковые ABI. От этого ничего не сломается.
Но оказывается нет. Вам не нравится что-то другое. И я так и не понял что именно.
Вариадики эквивалентны List
В чём проблема вы так и не сказали. return (xs + …); конвертируется в итерацию по этому листу с такой-же легкостью как рекурсивная версия конвертируется в рекурсивную версию с List’ами. Рекурсивную версию я выбрал потому что она приводится в туториалах по вариадикам и в ответах на stackoverflow.
Исправление red75prim, :
Автоматическая коэрсия туплов (a, (b, c)) -> (a, b, c)
Опять неправильно. Про автоматическую коэрсию я нигде не говорил. Для работы с гетерегенными списками в расте сейчас приходится записывать их как (a, (b, (c, ()))). Другое представление использовать, не (a, b, c), а (a, (b, (c, ()))). Это не коэрсия. Это другой способ записи. И правильно сконвертировать список вы так и не смогли.
ABI для того, чтобы все это дерьмо работало
Про ABI я написал в ответ на ваше «Здесь у нас не haskell». Ну вот я и решил, что вероятно вам не нравится что у функций f(a, b, c) и f((a, (b, (c, ())))) могут быть разные ABI. Поэтому я указал, что для их реализации можно использовать одинаковые ABI. От этого ничего не сломается.
Но оказывается нет. Вам не нравится что-то другое. И я так и не понял что именно.
Вариадики эквивалентны List
В чём проблема вы так и не сказали. return (xs + …); конвертируется в итерацию по этому листу с такой-же легкостью как рекурсивная версия конвертируется в рекурсивную версию с List’ами. Рекурсивную версию, я выбрал потому что она приводится в туториалах по вариадикам и в ответах на stackoverflow.
Исправление red75prim, :
Автоматическая коэрсия туплов (a, (b, c)) -> (a, b, c)
Опять неправильно. Про автоматическую коэрсию я нигде не говорил. Для работы с гетерегенными списками в расте сейчас приходится записывать их как (a, (b, (c, ()))). Другое представление использовать, не (a, b, c), а (a, (b, (c, ()))). Это не коэрсия. Это другой способ записи. И правильно сконвертировать список вы так и не смогли.
ABI для того, чтобы все это дерьмо работало
Про ABI я написал в ответ на ваше «Здесь у нас не haskell». Ну вот я и решил, что вероятно вам не нравится что у функций f(a, b, c) и f((a, (b, (c, ())))) могут быть разные ABI. Поэтому я указал, что для их реализации можно использовать одинаковые ABI. От этого ничего не сломается.
Но оказывается нет. Вам не нравится что-то другое. И я так и не понял что именно.
Вариадики эквивалентны List
В чём проблема вы так и не сказали. return (xs + …); конвертируется в итерацию по этому листу с такой-же легкостью как рекурсивная версия конвертируется в рекурсивную версию с List’ами.
Исправление red75prim, :
Автоматическая коэрсия туплов (a, (b, c)) -> (a, b, c)
Опять неправильно. Про автоматическую коэрсию я нигде не говорил. Для работы с гетерегенными списками в расте сейчас приходится записывать их как (a, (b, (c, ()))). Другое представление использовать, не (a, b, c), а (a, (b, (c, ()))). Это не коэрсия. Это другой способ записи.
ABI для того, чтобы все это дерьмо работало
Про ABI я написал в ответ на ваше «Здесь у нас не haskell». Ну вот я и решил, что вероятно вам не нравится что у функций f(a, b, c) и f((a, (b, (c, ())))) могут быть разные ABI. Поэтому я указал, что для их реализации можно использовать одинаковые ABI. От этого ничего не сломается.
Но оказывается нет. Вам не нравится что-то другое. И я так и не понял что именно.
Вариадики эквивалентны List
В чём проблема вы так и не сказали. return (xs + …); конвертируется в итерацию по этому листу с такой-же легкостью как рекурсивная версия конвертируется в рекурсивную версию с List’ами.
Исправление red75prim, :
Автоматическая коэрсия туплов (a, (b, c)) -> (a, b, c)
Опять неправильно. Про автоматическую коэрсию я нигде не говорил. Для работы с гетерегенными списками в расте сейчас приходится записывать их как (a, (b, (c, ()))). Другое представление использовать, не (a, b, c), а (a, (b, (c, ()))). Это не коэрсия. Это другой способ записи.
ABI для того, чтобы все это дерьмо работало
Про ABI я написал в ответ на ваше «Здесь у нас не haskell». Ну вот я и решил, что вероятно вам не нравится что у функций f(a, b, c) и f((a, (b, (c, ())))) могут быть разные ABI. Поэтому я указал, что для их реализации можно использовать одинаковые ABI. От этого ничего не сломается.
Но оказывается нет. Вам не нравится что-то другое. И я так и не понял что именно.
Вариадики эквивалентны List
В чём проблема вы так и не сказали. return (xs + …); конвертируется в итерацию по этому листу с такой-же легкостью как и рекурсивная версия.
Исходная версия red75prim, :
Автоматическая коэрсия туплов (a, (b, c)) -> (a, b, c)
Опять неправильно. Про автоматическую коэрсию я нигде не говорил. Для работы с гетерегонными списками в расте сейчас приходится записывать их как (a, (b, (c, ()))). Другое представление использовать, не (a, b, c), а (a, (b, (c, ()))). Это не коэрсия. Это другой способ записи.
ABI для того, чтобы все это дерьмо работало
Про ABI я написал в ответ на ваше «Здесь у нас не haskell». Ну вот я и решил, что вероятно вам не нравится что у функций f(a, b, c) и f((a, (b, (c, ())))) могут быть разные ABI. Поэтому я указал, что для их реализации можно использовать одинаковые ABI. От этого ничего не сломается.
Но оказывается нет. Вам не нравится что-то другое. И я так и не понял что именно.
Вариадики эквивалентны List
В чём проблема вы так и не сказали. return (xs + …); конвертируется в итерацию по этому листу с такой-же легкостью как и рекурсивная версия.