Haskell中的polymorphic-function
所謂polymorphic function(多態函數)指的是可作用於多種類型的輸入的函數。
以length函數為例:
‘’’
length :: [a] -> Int
‘’’
length
函數是用來計算list長度,不管輸入是整數的list、字元的list、tuple的list…,因為這個函數在乎的是包含幾個元素,而非哪種元素,因此length被定義為一個多態的函數。
length
函數簽名中的 type variable a
即是用以指涉它的函數輸入接受各種元素類型的list。
再舉個例子:
‘’’
id :: a -> a
‘’’
id
函數是一個不管給他什麼參數,都會回傳自己的參數。可以觀察到兩件事:
id
函數的簽名中,只出現 type variablea
,也就是說id
函數可以接收任何type的參數。id
函數接收的type和回傳的type是同一個。