参数顺序

一旦我们有多个参数,隐式类型参数的问题就变得很明显了。他们进来了哪个订单?

const::a -> b -> a

const @Int 意味着 a 是否等于 Int,还是 b?如果我们使用像 const::forall a b. a -> b -> a 这样的 forall 明确说明类型参数,那么顺序如下:a,then b

如果我们不这样做,那么变量的顺序是从左到右。要提到的第一个变量是第一个类型参数,第二个是第二个类型参数,依此类推。

如果我们想要指定第二个类型变量但不是第一个变量怎么办?我们可以像这样使用第一个变量的通配符

const @_ @Int

这个表达式的类型是

const @_ @Int::a -> Int -> a