重新定义函数很简单
(,) :: a -> b -> (a,b)
(,) a b = (a,b)
奇怪的(对我来说)是这个函数是为任意长度的元组定义的。因此,例如,实际上有一个函数:
(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> ... -> (a,b,c,...)
这是怎么做到的?为什么不为元组上的所有标准函数完成它,比如 zip?
Hoogle 没有给我任何结果,而且我看不到 Haskell 模板是如何做到这一点的,所以我认为它一定是编译器内部的某种魔法。但这对我来说似乎很不合时宜。