надуманный пример:В том числе две подписи, как с «типа Т» [Standard 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, реальная причина, что я пытаюсь сделать это монада Haskell стиля и таким, где MonadPlus
просто смесь из Monad
и Alternative
, на данный момент я просто повторив содержимое ALTERNATIVE
в MONAD_PLUS
, который кажется мне менее идеальным.)