Как можно использовать стрелки для нескольких кортежей?

foo (a1,a2) (b1,b2) (c1,c2) = (bar a1 b1 c1, bar2 a2 b2 c2)

У меня много таких конструкций с разным количеством кортежей аргументов. В случае

foo' (a1,a2) = (bar' a1, bar2' a2)

Я подумал: «Эй, это стрелы!»:

foo' = bar' *** bar2'

Но я еще не мог понять, сопоставляются ли функции с более чем одним входным кортежем (как в первой строке кода) со стилем стрелки и каким образом. Каков общий способ обработки таких функций? В идеале я всегда хочу что-то вроде foo = bar ... bar2.


person letmaik    schedule 18.08.2012    source источник
comment
Хм.. Это может быть интересной идеей перевести (&&&), (***) в какой-нибудь класс.   -  person ony    schedule 18.08.2012
comment
@ony Что ты имеешь в виду? (&&&) и (***) уже являются частью класса типов.   -  person Daniel Wagner    schedule 19.08.2012


Ответы (1)


person    schedule
comment
Хорошо, это работает, и это хорошо! :D И нет никакого способа явно передать все кортежи в него? Я как бы надеялся получить что-то более короткое, чем мой стандартный путь кортежа. - person letmaik; 18.08.2012
comment
Конечно, вы можете использовать хакерский подход к классу типов для индуктивного вывода нового кортежного типа функции; Я могу показать вам, как это делается, если Дэниел позволит мне отредактировать его сообщение, или я опубликую новый ответ. - person dflemstr; 18.08.2012
comment
@dflemstr: Хорошо, если у вас есть решение, которое позволяет мне использовать стрелки в этом случае без указания кортежей аргументов, вперед. :) - person letmaik; 20.08.2012