LINUX.ORG.RU

История изменений

Исправление 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 + …); конвертируется в итерацию по этому листу с такой-же легкостью как и рекурсивная версия.