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가 들어가는 식



아직 자세히 읽지는 않았는데 대충 이런 식인 듯

소스확장은 아니라 오버로딩 안되는 건 별 상관 없는 듯