История изменений
Исправление red75prim, (текущая версия) :
раст лучше не становится.
Ну, блин, уже не знаю как и объяснить.
Template metaprogramming в С++ может быть описано как нетипизированное лямбда-исчисление. Дженерики в расте - это типизированное лямда-исчисление. Оно не хуже, оно другое.
Напишите zip на frunk, чтобы нам было о чем говорить.
Можно и без франка написать (рекурсия на уровне типов по туплу (Head1, Tail1), где Tail1 - это (Head2, Tail2) или () и т.д. ) Но сначала скажите, чем (a).zip(b).zip(c)
и т.д., не нравится? Тем, что там ).zip(
вместо запятой?
Потому что zip с рекурсией по туплам будет выглядеть так
Zip::zip((a, (b, (c, ()))));
Как я уже говорил поддержка на уровне типов операции (A, B, C, …) -> (A, (B, C, …)) на уровне языка конечно не помешала бы.
Исправление red75prim, :
раст лучше не становится.
Ну, блин, уже не знаю как и объяснить.
Template metaprogramming в С++ может быть описано как нетипизированное лямбда-исчисление. Дженерики в расте - это типизированное лямда-исчисление. Оно не хуже, оно другое.
Напишите zip на frunk, чтобы нам было о чем говорить.
Можно и без франка написать (рекурсия на уровне типов по туплу (Head1, Tail1), где Tail1 - это (Head2, Tail2) или () и т.д. ) Но сначала скажите, чем (a).zip(b).zip(c)
и т.д., не нравится? Тем, что там ).zip(
вместо запятой?
Потому что zip с рекурсией по туплам будет выглядеть так
Zip::zip((a, (b, (c, ()))));
Как я уже говорил поддержка операции (A, B, C, …) -> (A, (B, C, …)) на уровне языка конечно не помешала бы.
Исправление red75prim, :
раст лучше не становится.
Ну, блин, уже не знаю как и объяснить.
Template metaprogramming в С++ может быть описано как нетипизированное лямбда-исчисление. Дженерики в расте - это типизированное лямда-исчисление. Оно не хуже, оно другое.
Напишите zip на frunk, чтобы нам было о чем говорить.
Можно и без франка написать (рекурсия на уровне типов по туплу (Head1, Tail1), где Tail1 - это (Head2, Tail2) или () и т.д. ) Но сначала скажите, чем (a).zip(b).zip(c)
и т.д., не нравится? Тем, что там ).zip(
вместо запятой?
Потому что zip с рекурсией по туплам будет выглядеть так
Zip::zip((a, (b, (c, ()))));
Поддержка операции (A, B, C, …) -> (A, (B, C, …)) на уровне языка конечно не помешала бы.
Исходная версия red75prim, :
раст лучше не становится.
Ну, блин, уже не знаю как и объяснить.
Template metaprogramming в С++ может быть описано как нетипизированное лямбда-исчисление. Дженерики в расте - это типизированное лямда-исчисление. Оно не хуже, оно другое.
Напишите zip на frunk, чтобы нам было о чем говорить.
Можно и без франка написать (рекурсия на уровне типов по туплу (Head1, Tail1), где Tail1 - это (Head2, Tail2) или () и т.д. ) Но сначала скажите, чем (a).zip(b).zip(c)
и т.д., не нравится? Тем, что там ).zip(
вместо запятой?
Потому что zip с рекурсией по туплам будет выглядеть так
Zip::zip((a, (b, (c, ()))));