要仅使用格式,您可以照常进行,
addMatrices : (augent : Vect rowCount (Vect columnCount element)) ->
(addend: Vect rowCount (Vect columnCount element)) ->
Vect rowCount (Vect columnCount element)
docs 说
新的声明必须以与前一个声明相同的缩进级别开始。
同样,book 仅在第 2.4.1 节中说 空白意义:布局规则,
...在任何定义和声明列表中,都必须从完全相同的列开始。
由于新行不是新声明,我认为这意味着新行可以从任何缩进级别开始,所以
addMatrices : (augent : Vect rowCount (Vect columnCount element)) ->
(addend: Vect rowCount (Vect columnCount element)) ->
Vect rowCount (Vect columnCount element)
其他变体也是有效的。
或者,根据 Al.G. 的评论,您可以使用类型别名,但如果 rowCount 和 columnCount 不在范围内,我猜它们不适合您,您将需要一个类型级函数,它是类型别名的泛化。这是一个返回类型的函数。
Matrix : Nat -> Nat -> Type -> Type
Matrix rows cols elem = Vect rows (Vect cols elem)
那么你就有了
addMatrices : (augent : Matrix rowCount columnCount element) ->
(addend: Matrix rowCount columnCount element) ->
Matrix rowCount columnCount element
这并不短。
说实话,我会考虑使用较短的名称并利用任何明显的上下文
addMatrices : (augent : Vect r (Vect c elem)) -> (addend: Vect r (Vect c elem)) -> Vect r (Vect c elem)