2010-01-06 45 views
1

如果我設計一個帶有類型推斷的新語言,沒有顯式類型和類繼承支持,然後想要添加繼承,那麼編譯器需要的額外提示是什麼?解決類型歧義時添加功能?得到類型推斷,想要添加類繼承

是否需要類名?

EDIT

類型-污點是通過在整個程序中包括的功能之間的分配跟蹤。

myVariable1 = New(MyTypeName1) 
myVariable2 = New(MyTypeName2) 

和類型MyTypeName1MyTypeName2分別推斷myVariable1myVariable2

在首發語言OK,你喜歡的東西有類的名稱,如MyTypeName1。不過,如果我們想提高語言支持:

MyVariable3 = myVariable1 
MyVariable3 = myVariable2 

可以通過代碼進行跟蹤(myVariable3現在可以包含兩種類型的大概是在一個層次)。

編輯

MyTypeName1和MyTypeName2的成員是由像陳述推斷:

myVariable1.name="Fred" 
myVariable2.name="JX3009" 

如果name成員MyTypeName1MyTypeName2不會是什麼在一個共同的基類?如果我們想要MyTypeName1MyTypeName2中的其他名稱屬性,並且基類中沒有任何屬性,該怎麼辦?有沒有一種方法可以告訴編譯器該做什麼/如何處理? (類型推斷的想法是減少打字不增加它...?)

或者我們是否需要明確指定層次結構?

+3

作業問題? – 2010-01-06 02:12:06

+2

吉姆:如果是這樣,我很高興這不是我的家庭作業,因爲我真的很難找出他在說什麼:) – 2010-01-06 02:13:13

+1

這是一個很高興你殘留給你先生們。 :) – martinr 2010-01-06 02:19:03

回答

1

該字段已加載不可判定性結果,但我已將其全部遺忘。如果你願意將繼承與子類型混淆,那麼你就沒有問題。如果你想要的東西更加雄心勃勃的(這聽起來就好像你這樣做),我會看看

  • 本傑明·皮爾斯的教科書Types and Programming Languages,這將覆蓋廣度和深度亞型以及他們如何做基本結果或者在類型推斷中玩得不好。 (我會看看自己,但我的副本在工作。)

  • Franç ois Pottier的博士論文。

另一個需要注意的名字是Joe Wells,他在類型系統和編程語言中負責了很多不可判定的結果。

什麼是最低解決類型歧義所需的額外提示?

如果對這個問題有獨特的答案,我會非常驚訝。我認爲這很可能是這些語言設計問題之一,其中有很多解決方案,只要最小化和註釋都是無法比擬的。