1
Simon Peyton-Jones在他的演講「Classes,Jim,但並不像我們所知道的那樣」中談到了如何通過使多態函數採用額外參數來實現類型類,函數賦予函數的類型。多態函數的專業化
然後他說,GHC經常通過特殊外殼函數優化函數,而不是在運行時實際傳遞該字典。然後他說這並不總是可能的,因爲Haskell具有多態遞歸,所以即使你有整個程序,也不一定消除所有的多態性。
他是什麼意思?什麼是一個程序的例子,其中一個人不知道多態函數的類型將在編譯時傳遞?
因此,在這種情況下,討論*多態遞歸*時,它是遞歸的*數據類型* – beta
@beta:不,多態遞歸發生在遞歸調用與開始時類型不同的函數時。 'f :: Show a => Int - > a - > String; f 0 x = show x; f n x = f(n - 1)[x]'是在普通列表上發生的多態遞歸。 – Vitus
哎呀......實際上在示例中添加了一個多態遞歸函數。 – Fixnum