從閱讀lambda cube和維基百科條目這thread,當適用於哈斯克爾,我的理解是,哈斯克爾 - 多態性和值取決於類型
- 家人條款索引項的 - 典型的功能從價值到價值
- 按類型索引的術語族 - ??
- 家庭由類型索引類型 - 參數多態型構造,類型家庭
- 家庭通過索引項類型 - PI類型(其中你假在哈斯克爾單類型),西格瑪類型等...
請糾正我,如果我錯了上面列舉的例子。引用該維基百科文章:
- 術語取決於類型或多態性。系統F,又名二階拉姆達微積分(在圖中寫爲λ2),是通過僅施加此屬性而獲得的。
我不知道Haskell如何適合這個(2)從上面。 Haskell有條款和類型,以及類型擦除之間有很強的區分,所以你不必思考的東西在OOP如typeof(a)
或b.GetType()
,然後繼續返回基於在運行時類型信息的一些價值。
這樣我就可以在Haskell想到的唯一的事情有關(2)也許在說mempty
在Data.Monoid
,其中的值取決於實例類型
- 返回類型多態性
- 數據家庭,你在LHS類型和價值構造函數在RHS
這是正確的嗎?雖然我覺得我並沒有使所有的連接...
這將是正確的說,特設多態滿足(2),而參數多態性滿足(3)?但是,特設與參數如何與類型與數據系列的RHS差異相關?
最後一件事,怎麼會總結類型的值,如
Nothing :: forall a. Maybe a
Right 3 :: forall a. Num b => Either a b
?我的猜測是這是(2)的一個例子?
感謝您對Conor答案的解釋和有用的鏈接。所以我認爲,lambda立方體不過是對基礎lambda微積分的不同擴展的補充。還有其他擴展,如Fc [類型系列有點類似Fω但不完全],或OO中的子類型多態性。 – gspindles
簡而言之,lambda多維數據集總結了是否允許從X到Y的函數,其中X和Y可以是「類型」或「術語」。僅供參考,[這裏是](http://augustss.blogspot.dk/2007/10/simpler-easier-in-recent-paper-simply.html)lambda多維數據集的簡潔教程實現,您可以輕鬆地在允許/禁止抽象的立方體的點。 –
謝謝!當我回家時我會讀它。所以lambda立方體實際上在類別層和上面沒有任何事情要做,儘管這可能不是必需的。 – gspindles