一個人爲的例子:包含兩個簽名,都與一個「類型T」 [標準ML]
signature A =
sig
type t
val x: t
end
signature B =
sig
type t
val y: t
end
signature C = sig include A B end
顯然,這將導致投訴type t
在C
發生兩次。但是,有沒有什麼辦法來表達,我希望兩個t
s到相提並論,與結束了:
signature C =
sig
type t
val x: t
val y: t
end
我試過各種愚蠢的語法像include B where type t = A.t
,這勿庸置疑沒有工作。有什麼我忘記試試嗎?
另外,我知道這只是簡單地通過檢查語言的語法來解決任何明顯(或缺少)的問題,但我無法在互聯網上的任何位置找到完整的語法。
(FWIW,我試圖做到這一點的實際原因是哈斯克爾式的單子和這樣的,其中MonadPlus
只是一個Monad
和Alternative
的組合;此刻我只是重複的內容ALTERNATIVE
in MONAD_PLUS
,這讓我覺得不太理想。)