class SumRes r where
sumOf :: Integer -> r
instance SumRes Integer where
sumOf = id
instance (Integral a, SumRes r) => SumRes (a -> r) where
sumOf x = sumOf . (x +) . toInteger
SumRes类型必有一个函数 sumOf,其接收一个integer,返回一个sumOf
当SumRes是一个整数时
sumOf 相当于id
当SumRes是一个函数时(它接收一个integral,返回一个SumRes)
将sumOf递归映射 sumOf接收一个整数,返回的东西还是有个sumOf。
https://stackoverflow.com/questions/3467279/how-to-create-a-polyvariadic-haskell-function