contract stringer(x T) {
var s string = x.String()
}
func Stringify(type T stringer)(s []T) (ret []string) {
for _, v := range s {
ret = append(ret, v.String()) // now valid
}
return ret
}
stringifyInt := Stringify(int)
// stringifyInt : func([]int), 이 과정은 명시적으로 수행하지 않아도 됨
// 즉 Stringify에다 바로 []int 넣어도 stringifyInt 같은 함수가 알아서 인스턴스화되고 그 다음에 []int가 들어가는 식
아직 자세히 읽지는 않았는데 대충 이런 식인 듯
소스확장은 아니라 오버로딩 안되는 건 별 상관 없는 듯
약간 ghc core에서 타입 클래스 확장하는거 보는 느낌이다 - dc App