Li-Fan Chen says to YSITD
為了不同 type 的 extensions 可以更嚴謹的執行同一個 function 所以在每個不同泛型 type 的同一個 function 都重複寫一樣的 code。