重新定义函数是很简单的
(,) :: a -> b -> (a,b)
(,) a b = (a,b)
奇怪的是(对我来说)这个函数是为任意长度的元组定义的。例如,实际上有一个函数:
(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> ... -> (a,b,c,...)
这是怎么做的?为什么不对元组上的所有标准函数都这样做,比如zip?
Hoogle给了我,我不明白模板Haskell是如何做到这一点的,所以我认为这一定是编译器内部的某种魔法。但对我来说,这似乎非常不符合