一个人为的例子:
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,我尝试这样做的真正原因是 Haskell 风格的 monad 等,其中 aMonadPlus
只是 aMonad
和 an的混合Alternative
;目前我只是在重复ALTERNATIVE
in的内容MONAD_PLUS
,这让我觉得少比理想。)